home *** CD-ROM | disk | FTP | other *** search
/ Night Owl 6 / Night Owl's Shareware - PDSI-006 - Night Owl Corp (1990).iso / 015a / dosimp10.zip / SIMPLY1.HYP < prev    next >
Text File  |  1991-08-12  |  115KB  |  1,969 lines

  1.                              |Tby Kari M. Jackson|T
  2.  
  3.                      |TDDDDDD         OOOO        SSSS  |T
  4.                      |TDD    DD     OO    OO    SS    SS|T
  5.                      |TDD     DD   OO      OO  SS       |T
  6.                      |TDD      DD  OO      OO   SS      |T
  7.                      |TDD      DD  OO      OO     SSS   |T
  8.                      |TDD      DD  OO      OO        SS |T
  9.                      |TDD     DD   OO      OO         SS|T
  10.                      |TDD    DD     OO    OO   SS    SS |T
  11.                      |TDDDDDD         OOOO       SSSS   |T
  12.                      (Disk)     (Operating)   (System)
  13.  
  14.                                 |TSimply Said,|T
  15.  
  16.                                 |TSimply Done,|T
  17.  
  18.                                 |TSIMPLY EASY!|T
  19.    |TVersion 1.0|T                                                    |T(c)1991|T
  20.                             <page down> for menu              
  21.                                  Main Menu
  22.   -=|sWhat Is DOS?|s=-                                 -=|sAbout This Program|s=-
  23.                                                               ╔═════════╗
  24.   APPEND      |sDATE|s/|sTIME|s   FDISK        MKDIR     » SHARE      ║ DOS 5.0 ║
  25.   ASSIGN      DEBUG       FILES        MODE      » SHELL      ╚═════════╝
  26.   ATTRIB    » |sDEL|s/|sERASE|s   FIND         MORE        SHIFT       DEVICEHIGH
  27. » BACKUP      DEVIC|1E      FOR          NLSFUNC     SORT        DO|1S
  28.   BREAK     » DIR         FORMAT     » PATH        STACKS    » DOSKEY
  29.   BUFFERS     DISKCOMP    GOTO         PAUSE       SUBST       EDIT
  30.   CALL        DISKCOPY    GRAFTABL     PRINT       SWITCHAR    EMM386
  31.   CHCP        DOSSHELL    GRAPHICS     PROMPT      SWITCHES    EXPAND
  32.   CHDIR       DRIVPARM    GWBASIC    » RECOVER     SYS         HELP
  33.   CHKDSK      ECHO        IF           REM         TREE        LOADFIX
  34.   CLS         EDLIN       INSTALL      RENAME      TRUENAME    LOADHIGH
  35.   COMMAN|1D     EXE2BIN     JOIN         REPLACE   » TYPE        MIRROR
  36.   COMP        EXIT        KEYB         RESTORE     VER         QBASIC
  37. » COPY        FASTOPEN    LABEL        RMDIR       VERIFY      SETVER
  38.   COUNTRY     FC          LASTDRIVE    SELECT      VOL         UNDELETE
  39.   CTTY        FCBS        MEM          SET       » XCOPY       UNFORMAT
  40.                        <page down> for more subjects
  41.    » ASCII             Floppy           » Memory          » Device|1s
  42.    » Attributes        Fragmented         ══════            ═══════
  43.      BIOS              Hidden Files     » CMOS              AUX
  44.    » |sBoot|s/|sReboot|s     » Keyboard           Conventional      CLOCK$
  45.    » Boo|1t Disk         Logical Drives     EMS               COM1
  46.      Bytes             Macros             Expanded          CON
  47.      Cache             Multitasker        Extended          LPT1
  48.      COMSPEC           NOT                High              NUL
  49.      Concatenation     Overlay            LIM               PRN
  50.      Current           Parameters         Protected Mode
  51.      Default           Parent             RAM
  52.    » Directory         POST               Real Mode
  53.    » Disks             RAMdisk            ROM               CPU
  54.    » Editing Keys    » Redirection        Shadow            ═══
  55.      Environment       Replaceable      » TSR               8088
  56.      ERRORLEVEL        Root               Upper             286
  57.    » Executable      » Shelling Out       XMS               386
  58.      EXIST             Virtual Disk                         AT
  59.      FAT             » Wildcards                            XT
  60.                        <page down> for more subjects
  61.     Error Messages                       Files
  62.     ══════════════                       ═════
  63.     Abort, Retry, Fail, Ignore           *.*              HIMEM.SYS
  64.     Access denied                      » ". and .."       IBMBIO.COM
  65.     Bad command or filename              ANSI.SYS         IBMDOS.COM
  66.     Disk full                          » AUTOEXEC.BAT     IO.SYS
  67.     File creation error                » Batch File       MSDOS.SYS
  68.     Invalid COMMAND.COM                » COMMAND.COM      RAMDRIVE.SYS
  69.     Non system disk                    » CONFIG.SYS       SMARTDRV.SYS
  70.     Out of environment space             Device Driver    VDISK.SYS
  71.                                          DRIVER.SYS
  72.   » Caution!      Numbering Systems
  73.     ════════      ═════════════════    » Software Distribution Methods
  74.     Cleaning      Binary                 ═════════════════════════════
  75.     Low-Level     Decimal                BBS              Freeware
  76.     Magnetism     Hexadecimal            Commercial       Public Domain
  77.     Park                                 Demo             Shareware
  78.     Power                                Downloading
  79.     Write-protect
  80.                               -=|sTrademarks|s=-
  81.                       The |TSHELL|T and |tCOMSPEC|t Commands
  82.  
  83. Many experts say that it is just good sense to have a "clean" root direc-
  84. tory.  That means you want to have the smallest possible number of files
  85. in the |nroot|n directory.  Many people will try to tell you that COMMAND.COM
  86. is one of the files that must remain in the |nroot|n |ndirectory|n, but this is
  87. just not true.
  88.  
  89. When you boot your computer, the first files loaded into memory are the
  90. Hidden files, which are named |tIO.SYS|t and |tMSDOS.SYS|t if you use MS-DOS, or
  91. |tIBMBIO.COM|t and |tIBMDOS.COM|t if you use PC-DOS.  (These two |nHidden files|n
  92. must be in the |nroot|n |ndirectory|n of the boo|1t disk, and in most versions of
  93. DOS they must be the first two files stored on the disk, or they will not
  94. be found and you will receive the "|tNon system disk|t replace and strike any
  95. key" message.)  Next, a file called CONFIG.SYS (which must always be in
  96. the |nroot|n |ndirectory|n in order to be located by DOS) is read, then COMMAND
  97. .COM is loaded.  DOS looks in the |nroot|n |ndirectory|n to find |nCOMMAND.COM|n.
  98.  
  99. However, if there was a |nSHELL|n statement in |nCONFIG.SYS|n, then DOS will in-
  100.                            <page down> for more
  101.                         SHELL and COMSPEC continued
  102. stead search the directory indicated there!  Next, COMMAND.COM reads and
  103. executes each line of your AUTOEXEC.BAT file, if one is present in your
  104. root |ndirectory|n.  After this process is complete, you are greeted by a DOS
  105. prompt.
  106.  
  107. Now if you run a program which requires a great deal of memory, the tran-
  108. sient portion of |nCOMMAND.COM|n will drop out of |nmemory|n, to leave room for
  109. this program.  Therefore, the first thing that DOS needs to do when you
  110. exit from this program, is to reload |nCOMMAND.COM|n.  However, this reload-
  111. ing cannot use the |nSHELL|n statement in CONFIG.SYS to find the |ndirectory|n
  112. where |nCOMMAND.COM|n resides.  |nCONFIG.SYS|n can only be read by DOS during
  113. |sboot|sup.  But DOS knows that it should check the environment for a vari-
  114. able called |nCOMSPEC|n.  The |nCOMSPEC|n variable tells DOS where to look to re-
  115. load |nCOMMAND.COM|n, whereas the |nSHELL|n statement tells DOS where to look to
  116. find |nCOMMAND.COM|n during bootup.  Therefore you need both of these items
  117. if you want to move |nCOMMAND.COM|n out of the |nroot|n |ndirectory|n.
  118.  
  119. There are two ways to set this |nCOMSPEC|n |nenvironment|n variable:
  120.                            <page down> for more
  121.                         SHELL and COMSPEC continued
  122. 1.  The |nCOMSPEC|n statement in the AUTOEXEC.BAT.  You could also enter this
  123. command from the command line if you ever want to.  Here it is:
  124.           |nSET|n |nCOMSPEC|n=C:\DOS\|nCOMMAND.COM|n
  125. (That is assuming that DOS is the name of the directory to which you have
  126. moved COMMAND.COM.)  However, there's no sense cluttering up your AUTOEX-
  127. EC.BAT file with this line, when there is a much easier way to set this
  128. variable.
  129. 2.  The |nSHELL|n statement in CONFIG.SYS.  Most people will tell you that
  130. the |nSHELL|n statement should look like this:
  131.           |nSHELL|n=C:\DOS\|nCOMMAND.COM|n /P
  132. However, this will not set the |nCOMSPEC|n variable in the environment.
  133. With just a slight change to the |nSHELL|n statement, though, like this:
  134.           |nSHELL|n=C:\DOS\|nCOMMAND.COM|n C:\DOS /P
  135. the second occurrence of the name of the |ndirectory|n will tell DOS to set
  136. the |nCOMSPEC|n variable.  It seems redundant, but it is necessary to do
  137. this, or when you exit a large program you will receive this message:
  138. "|tInvalid COMMAND.COM|t system halted", because if the |nCOMSPEC|n variable is
  139. set incorrectly, then DOS has no way of finding |nCOMMAND.COM|n.  There is
  140.                            <page down> for more
  141.                         SHELL and COMSPEC continued
  142. nothing you can do about that except reboot.
  143.  
  144. So remember, you can move COMMAND.COM out of the root directory and in-
  145. to a subdirectory, but only if you use the proper syntax for the |nSHELL|n
  146. statement in CONFIG.SYS, or else the |nCOMSPEC|n statement in AUTOEXEC.BAT
  147. along with the "popular" syntax of the |nSHELL|n statement.
  148.  
  149. If you do not move |nCOMMAND.COM|n from the |nroot|n |ndirectory|n, you do not need
  150. the |nSHELL|n statement, unless you want to increase the size of your envir-
  151. onment.  If you receive an "|tOut of environment space|t" message, you will
  152. need this line in your |nCONFIG.SYS|n file:
  153.           |nSHELL|n=C:\|nCOMMAND.COM|n /E:nnn /P
  154. where nnn = the number of bytes (for DOS 3.2 or later) or the number of
  155. 16-byte paragraphs (for DOS 3.1) of environment space you would like to
  156. have.  In this case, you do not need to specify the |ndirectory|n name where
  157. |nCOMMAND.COM|n is, twice, since |nCOMMAND.COM|n is in the |nroot|n |ndirectory|n, so
  158. |nCOMSPEC|n will be set automatically.  The purpose of this form of the |nSHELL|n
  159. line is only to enlarge the |nenvironment|n.
  160.                            <page down> for more
  161.                         SHELL and COMSPEC continued
  162. Of course, if you do have COMMAND.COM in a subdirectory, and you need
  163. more environment space also, you can combine those statements like this:
  164.           |nSHELL|n=C:\DOS\|nCOMMAND.COM|n C:\DOS /E:nnn /P
  165.  
  166. About the size of the |nenvironment|n you want to set:  The default is 160
  167. bytes (except for DOS version 5, where the |ndefault|n is 256 |nbytes|n), so if
  168. you've run out of space, obviously you need a higher number than that.
  169. The highest number you can use is 32,767.  A good setting is 256 |nbytes|n.
  170. Don't increase it over that unless you run out of space with that set-
  171. ting.  Also, the number of |nbytes|n in the |nenvironment|n must be a multiple of
  172. 16, or DOS will "round up" and give you a multiple of 16 anyway.  And if
  173. you have DOS 3.1, remember to use the number of 16-byte paragraphs, rath-
  174. er than the number of |nbytes|n.
  175.  
  176. By the way, the purpose of the /P is to cause |nCOMMAND.COM|n to be the pri-
  177. mary command interpreter, as opposed to being a secondary shell which can
  178. be exited from.  (See shelling out.)  The primary shell runs AUTOEXEC.BAT
  179. whenever it is done loading.  If there is no shell statement, AUTOEXEC
  180.                            <page down> for more
  181.                         SHELL and COMSPEC continued
  182. .BAT will be called anyway.  But if there is a shell statement, then
  183. AUTOEXEC.BAT will only be called if the /P switch is present.
  184.  
  185. Now the fact that /P causes COMMAND.COM to be the primary shell, is
  186. quite important.  If you left out the /P in the shell statement, and
  187. you accidentally typed EXIT at the DOS prompt, then |nCOMMAND.COM|n would
  188. drop out of memory and you wouldn't be able to do anything except re-
  189. boot.
  190.  
  191. One more thing about the |nCOMSPEC|n environment variable.  The default set-
  192. ting is the root directory of the disk you booted from, unless you tell
  193. DOS otherwise.  So if you have a hard drive, but you sometimes |nboot|n from
  194. a floppy disk, then when you do, you'll probably want to issue a command
  195. such as |nSET|n COMSPEC=C:\DOS\COMMAND.COM depending on where your COMMAND
  196. .COM file really is, so that DOS will use that copy instead of always
  197. asking you to "Place disk with |nCOMMAND.COM|n into drive A:" every time you
  198. exit from a large program after having booted from the |nfloppy|n drive.
  199.  
  200.  
  201.                               The |tEnvironment|t
  202. (See also SHELL.)
  203.  
  204. The |nenvironment|n is a sort of a scratch pad that DOS and many applications
  205. programs know how to use for certain purposes.  Certain functions of DOS
  206. know that if they need some information, this information can possibly be
  207. found in the |nenvironment|n, and memory is set up in such a way that these
  208. functions know where to look to find the |nenvironment|n.  So, if you set
  209. these information variables in the |nenvironment|n, then the information will
  210. be there when it is needed.
  211.  
  212. The variables that DOS can use are COMSPEC, PATH, and PROMPT.  Also any
  213. batch file can use variables that have been placed into the |nenvironment|n
  214. using the SET command.  Many programs are written so that they know to
  215. look for a certain variable in the |nenvironment|n.  For example, many pro-
  216. grams need to use files other than the main executable program file while
  217. they're running.  Programs will look for these files in the current dir-
  218. ectory, whatever directory you were in when you first loaded the program.
  219. Some programs though, know that if the files are not located in the cur-
  220.                            <page down> for more
  221.                            Environment continued
  222. rent directory, they may be located in a |ndirectory|n specified by a certain
  223. variable in the |nenvironment|n.  So if you have previously set that particu-
  224. lar variable to be equal to the |ndirectory|n where these files are located,
  225. then the program will be able to find these overlay files.
  226.  
  227. Suppose the manual to your word processor says that the program knows
  228. how to search for files in a |ndirectory|n specified by a WORD variable.
  229. And suppose all your word processing files are in a |ndirectory|n called
  230. WP.  Then what you want to do is put this line into your AUTOEXEC.BAT
  231. file:
  232.           |nSET|n WORD=C:\WP
  233. Now your word processor will always be able to find its files, even if
  234. you do not change to the WP |ndirectory|n before you start the program.
  235. If a program uses |nenvironment|n variables in this way, it will be men-
  236. tioned in the installation chapter in that program's manual.
  237.  
  238. DOS version 5 uses two more |nenvironment|n variables than previous versions.
  239. The DIRCMD variable which relates to the DIR command, and the TEMP vari-
  240. able which is for redirection and for the DOSSHELL.
  241.                               File |tAttributes|t
  242.  
  243. A file can have any of four |nattributes|n, which can be turned on or off by
  244. the ATTRIB command.  (DOS versions previous to 5.0 can only alter the R
  245. and A |nattributes|n.  If you need to alter an H or S attribute and you have
  246. an older version of DOS, there are many utilities that can do it, such as
  247. PC Tools, Norton, and several public domain or freeware ones such as HIDE
  248. .COM from PC Magazine.)  The |nattributes|n for each file are stored in the
  249. directory.  The possible |nattributes|n are Hidden, System, Archive, and
  250. Read-only.  (The word "attributes" can also refer to screen colors.)
  251.  
  252. |tHidden files|t can be executed, but they cannot be deleted, updated, cop-
  253. ied, or even seen in a |ndirectory|n listing.  Many programs give a Hidden
  254. attribute to their most important files, on the assumption that since you
  255. can't see them in a |ndirectory|n listing, you won't know they're there, and
  256. you won't try to mess with them.  DOS has two |nHidden files|n named IO.SYS
  257. and MSDOS.SYS for MS-DOS, or IBMBIO.COM and IBMDOS.COM for PC-DOS.
  258.  
  259. The System attribute is quite similar to the Hidden one.
  260.                            <page down> for more
  261.                            Attributes continued
  262. The Archive attribute is turned on every time a file is created, copied
  263. into a directory, or updated in any way.  The main purpose of this is so
  264. that a backup program can tell which files need to be backed up.  Most
  265. |nbackup|n programs turn the Archive attribute off each time they |nbackup|n a
  266. file, so the program knows that if the Archive attribute is on, the file
  267. has been changed since the last |nbackup|n was done.
  268.  
  269. A file which has its Read-only attribute set can be executed, read, re-
  270. named, or copied, but can't be deleted or updated.  Setting the R attrib-
  271. ute is a good way to save your files from accidental deletion.  If you
  272. try to delete a file that has an R attribute, you'll get "|tAccess denied|t".
  273.  
  274. However, some programs will search for certain companion files that they
  275. need in order to run, and if the companion file has its R attribute set
  276. to on, the program might think the file is missing.  So if you ever run a
  277. program which says, "I cannot find my |toverlay|t file named ABCDEF.OVL, I am
  278. aborting myself", even though you can see that the file is in the current
  279. |ndirectory|n, just turn the R attribute for that file off, and the program
  280. should run just fine.
  281.                             The |tATTRIB|t Command
  282.  
  283. The syntax for this command is as follows:
  284.           |nATTRIB|n +a FILENAME.EXT
  285. where "a" can be the initial of any one of the four file attributes, and
  286. the + is for turning the attribute on.  To turn one off, use - instead.
  287. But DOS versions previous to 5 can only work with the R and A |nattributes|n.
  288.  
  289. A very little-known use for the |nATTRIB|n command, is to search your hard
  290. drive for a file.  If you use the |nATTRIB|n command without any +a or -a,
  291. it will just show you the names of the specified files, with their at-
  292. tributes displayed next to each.  An extra benefit of this is that the
  293. file's entire |spath|sname is included!  So now you know in which directory
  294. that file resides!  For example, suppose you have a file named ABCDEF
  295. .EXE, and you can't remember where it is.  Go to the root |ndirectory|n and
  296. use this command:
  297.           |nATTRIB|n ABCDEF.EXE /S
  298. The /S tells |nATTRIB|n to search not only the current |ndirectory|n, but also
  299. every subdirectory below the |ncurrent|n one, so if you start from the |nroot|n,
  300.                            <page down> for more
  301.                              ATTRIB continued
  302. the whole drive will be searched.  The result may be this:
  303.           A R  C:\DOS\ABCDEF.EXE
  304. Now you see that the file is in the \DOS directory.
  305.  
  306. The |nATTRIB|n command also fully supports wildcards.  For example, you can
  307. set the R attribute of every .EXE file on the drive with the command AT-
  308. TRIB +R *.EXE /S, if you do it from the root |ndirectory|n.  Or, if you want
  309. to find every .BAT file you have on the drive, |nATTRIB|n \*.BAT /S will show
  310. you their full file specifications, even if you're not in the |nroot|n direc-
  311. tory because the backslash (\) tells DOS to start the search in the |nroot|n.
  312.  
  313. In DOS version 5, this command works on H and S attributes as well as A
  314. and R ones.  But you can't do anything with a file that has H and/or S
  315. until those two |nattributes|n are gone.  If you have a file with all four
  316. |nattributes|n, and you want to remove the A, for example, you can't do it
  317. while the file has H and S, so |nATTRIB|n -H -S -A FILE.EXT will do it.  If
  318. you wanted that file to keep its H and S, then put them back with |nATTRIB|n
  319. +H +S FILE.EXT.  Yes, it is ok to change more than one attribute on one
  320. command line like that.
  321.                      The |t". and .."|t Directory Entries
  322.  
  323. What on earth are these things?  They appear at the top of every direc-
  324. tory on my hard drive, except the root |ndirectory|n!  What are they?  The .
  325. stands for the current |ndirectory|n, and the .. stands for the parent direc-
  326. tory.  You can use them as a form of shorthand.  If you want to delete
  327. every file in the |ncurrent|n |ndirectory|n, you can type:
  328.           |nDEL|n |n*.*|n
  329. or you can save typing those bothersome asterisks by typing:
  330.           |nDEL|n .
  331. with the same results.
  332.  
  333. Suppose you're in a subdirectory of a subdirectory of (etc.) named
  334.           C:\WP\LETTERS\OCT1990\JOHN
  335. and you want to change to the |ndirectory|n C:\WP\LETTERS\OCT1990.  You can
  336. either type
  337.           CD C:\WP\LETTERS\OCT1990
  338. or, since .. stands for the |nparent|n |ndirectory|n of the |ncurrent|n |ndirectory|n,
  339. you can just type:
  340.                            <page down> for more
  341.                            ". and .." continued
  342.           CD ..
  343. with the same results!  Won't that save a few thousand keystrokes per
  344. year?  Actually you don't even need the space in there, you could type
  345. CD.. just as well.
  346.  
  347. And remember, when the DOS manual says that you can't remove a directory
  348. until it is empty, it really means until it is empty of everything except
  349. the . <DIR> and .. <DIR> entries!  Don't ever try this:
  350.           |nDEL|n ..
  351. to empty your |ndirectory|n in preparation for the RMDIR command, since what
  352. that command will do is delete every file in the parent |ndirectory|n!
  353.  
  354.  
  355.  
  356.  
  357.  
  358.  
  359.  
  360.  
  361.                         The |tANSI.SYS|t Device Driver
  362.  
  363. You can do really great things with this console driver, if you install
  364. it in your CONFIG.SYS file.  Edit |nCONFIG.SYS|n to include this line:
  365.           DEVICE=C:\DOS\|nANSI.SYS|n
  366. (That is assuming you have the |nANSI.SYS|n file in your DOS directory.)  And
  367. reboot your computer.  Now you're ready to use |nANSI.SYS|n, but what is it?
  368. It's a |ndevice driver|n that allows you much more control over your |sCON|ssole,
  369. or monitor-and-keyboard.  You can change the colors on your screen, or
  370. make your own keyboard macros.  This involves using a thing called the
  371. ESCape character.  The easiest way to get this character to the screen,
  372. where the ANSI |ndevice driver|n can see it and interpret it, is with the
  373. PROMPT command.  One of the metacharacters which are used as parameters
  374. to this command is $e, which will put an ESCape character into your
  375. |nprompt|n.  Well this is what it's for.
  376.  
  377. To change the color of your screen from the dull drab gray-on-black of
  378. normal DOS, here is the |nPROMPT|n command you'll need:
  379.           |nPROMPT|n $e[3x;4ym
  380.                            <page down> for more
  381.                             ANSI.SYS continued
  382. where 3x is the foreground (text) color, and 4y is the background color.
  383. The color codes, that take the place of the x and the y, are as follows:
  384.        0  black       1  red         2  green       3  yellow
  385.        4  blue        5  magenta     6  cyan        7  white
  386. Notice that the m at the end of that command must be in lowercase or the
  387. command will not work.  It's that simple to make your screen whatever
  388. color you choose.  Remember, though, that this changes the PROMPT vari-
  389. able in the environment, so you lose the |nPROMPT|n statement you had already
  390. set up.  It will look like you don't have a |nprompt|n at all anymore.  So
  391. what you might want to do is add your normal |nPROMPT|n statement to the end
  392. of that one, like this:
  393.           |nPROMPT|n $e[3x;4ym$p$g
  394. Now you have both your new color scheme and your old |nprompt|n!  Another way
  395. is to use two separate commands, the color changing command, followed by
  396. the regular |nPROMPT|n command to get your normal |nprompt|n back.  This would
  397. save space in the |nenvironment|n, because the longer color command would be
  398. replaced by the shorter normal |nPROMPT|n command.  If you use this method in
  399. a batch file though, you need to observe the rules mentioned under macros
  400.                            <page down> for more
  401.                             ANSI.SYS continued
  402. about the use of multiple PROMPT statements in a batch file.
  403.  
  404. Now when ANSI changes your screen colors, it will only change what is
  405. written on the screen from that time on.  It will not automatically make
  406. your whole screen change.  In order to get the whole screen filled with
  407. your new colors, all you need to do is clear the screen with the CLS
  408. command.  Another way to clear the screen is to use the ANSI ESCape
  409. sequence 2J.  Just add it to the end of your color-changing command:
  410.           |nPROMPT|n $e[32;40m$e[2J
  411. This time the J ANSI command must be in uppercase, as opposed to the m
  412. and p ANSI commands which must be in lowercase.  Now remember, if you use
  413. this method of clearing the screen, don't add your normal |nprompt|n to the
  414. end of it.  You must give a normal |nPROMPT|n command separately, and after
  415. that one that includes 2J, or else the screen will be cleared every time
  416. you hit <Enter>, before you get a chance to see the result of the command
  417. you just entered.
  418.  
  419. Using ANSI to set up keyboard |tmacros|t is just as easy!  A |nPROMPT|n command
  420.                            <page down> for more
  421.                             ANSI.SYS continued
  422. for that purpose would look like this:
  423.           |nPROMPT|n $e[0;68;"DIR";13p
  424. Notice that the p at the end of that command must be in lowercase or the
  425. command will not work.  The number combination 0;68 stands for the <F10>
  426. key, and the 13 stands for the <Enter> key.  (See the ASCII subject for
  427. the codes for all the function keys.)  Therefore, the above PROMPT would
  428. cause the <F10> key to be reassigned as |nDIR|n <Enter>, so every time you
  429. hit the <F10> key, you would automatically get a directory listing.  You
  430. can put any command you want into one of these macros, even more than one
  431. command into the same macro.  Suppose that you like to clear your screen
  432. before you look at a DIR listing.  The following command would set up the
  433. <F10> key to do that for you:
  434.           |nPROMPT|n $e[0;68;"CLS";13;"DIR";13p
  435. ANSI will write the parts in quotes exactly the way they are entered.
  436. The parts that are not in quotes are interpreted as decimal |nASCII|n codes.
  437. The quoted strings and the |ndecimal|n |nASCII|n strings must be separated by
  438. semicolons (;).
  439.  
  440.                            <page down> for more
  441.                             ANSI.SYS continued
  442. Another useful code for ANSI macros is 32 which means the <Space> bar.
  443. You might want to reassign a function key to "DIR";32.  Notice that one
  444. has a <Space> (32) instead of an <Enter> (13).  That way, what it puts on
  445. your screen at the command line, is "DIR " (without the quotes) so that
  446. if you want to add /W or *.EXE or any other parameters to the DIR com-
  447. mand, you can, or if not, just hit <Enter>.  Actually, it would be just
  448. as good to assign "DIR " to the key, as to assign "DIR";32, but that was
  449. just to show that 13 for <Enter> is not the only key code that's worth
  450. anything.
  451.  
  452. Another type of "macro" you can use ANSI for, is rearranging the way your
  453. keyboard is set up.  Do you need to use the " a lot more often than the '
  454. and you're tired of hitting the <Shift> key to get to the "?  Well, since
  455. the ASCII code for " is 34 and the code for ' is 39, you can do this:
  456.           |nPROMPT|n $e[34;39p
  457.           |nPROMPT|n $e[39;34p
  458. Now whenever you hit the ' key you'll get " and then to make a ' you'll
  459. have to use the <Shift> key.
  460.                            <page down> for more
  461.                             ANSI.SYS continued
  462. This is not a perfect solution, however, because not all applications
  463. recognize ANSI key reassignments.  Some programs will still give you '
  464. whenever you hit ' even though you have " assigned to the ' key.  But it
  465. can't hurt to try.  Maybe your favorite word processor will let you do
  466. these reassignments.  At any rate, the changes will work in DOS for sure.
  467.  
  468. You can put all your keyboard redefinition |sPROMPT|ss, and your color change
  469. |nPROMPT|n into your AUTOEXEC.BAT file or any other batch file.  There is one
  470. problem with this, however.  Most people like to have ECHO off in their
  471. |nAUTOEXEC.BAT|n file, so the screen stays as clean as possible during |sboot|s-
  472. up.  But when |nECHO|n is off, the |nPROMPT|n sequence is not sent to the screen.
  473. So the ANSI ESCape character is not seen by the ANSI driver, so it will
  474. not be acted upon, until the end of the |nbatch file|n, when DOS automatical-
  475. ly turns |nECHO|n back on.  But by then it's too late for all but the last of
  476. the |nPROMPT|n strings to be interpreted by the ANSI driver, since each new
  477. |nPROMPT|n statement replaces the old |nPROMPT|n statement in the environment.
  478. The last |nPROMPT|n statement executed is the only one which will be seen by
  479. the ANSI driver, unless |nECHO|n is on while these |nPROMPT|n statements are be-
  480.                            <page down> for more
  481.                             ANSI.SYS continued
  482. ing sent to the environment.  You don't need to leave ECHO on for the
  483. entire batch file, however, just from the line immediately following the
  484. first PROMPT statement, until the line immediately preceding the last
  485. |nPROMPT|n statement.
  486.  
  487. There's an easy way to get around this problem, though, if you have DOS
  488. version 3.3 or later.  This version added the @ symbol to the list of
  489. |nbatch file|n commands, to suppress the display of any line in a |nbatch file|n.
  490. You still need to have |nECHO|n on for this, but the ugly old |nPROMPT|n lines
  491. will not show on the screen.  You just precede each |nPROMPT|n command with
  492. the @ symbol, and then leave a blank line right after that, then the next
  493. @PROMPT line, another blank line, etc.  After all your @PROMPT lines and
  494. blank lines, then turn |nECHO|n off for the rest of the |nbatch file|n.  And do
  495. not forget to issue a normal |nPROMPT|n command afterward, or else it will
  496. look like you don't have a |nprompt|n at all, since any ESCape sequences sent
  497. to the screen are intercepted and interpreted by the ANSI driver before
  498. they get there.
  499.  
  500.                            <page down> for more
  501.                             ANSI.SYS continued
  502. There are other ways to get the ESCape character to the screen, besides
  503. using the PROMPT command, but they aren't really used so much by begin-
  504. ners.  The ESC character can be represented by the ^[ keystroke combin-
  505. ation, but in most text editors or word processors, if you enter ^[, the
  506. same thing will occur as what would happen if you hit the <Esc> key.  (A
  507. symbol like ^[ always means to hold down the <Ctrl> key while typing [.)
  508. But most text editors and word processors do have a way to enter control
  509. characters into the text.  The DOS command EDLIN uses ^V.  If you enter
  510. ^V followed immediately by the [ character, then the ^[ (ESC) character
  511. will be inserted into the text.  When you enter this into |nEDLIN|n it's go-
  512. ing to look like this on the screen at first:  ^V[[31;40m.  But if you
  513. later list the file, or save it and edit it again later, you will see
  514. ^[[31;40m.  The V has disappeared!  But that's ok, it's supposed to do
  515. that.  The ^V was just there to tell |nEDLIN|n that the [ was supposed to
  516. mean a ^[, and that's what it did, because now it says ^[.  But don't
  517. forget, the ^[ represents only the ESCape character, and the combination
  518. that ANSI will recognize as one of its commands, is ESC + [.  The [ needs
  519. to follow the ^[ which stands for ESC.
  520.                            <page down> for more
  521.                             ANSI.SYS continued
  522. If you have DOS version 5.0, you can use the EDIT command instead of the
  523. EDLIN line editor, because it's easier to use.  If you do, ^P + ESC will
  524. do the same thing as ^V + [ does in |nEDLIN|n--give you an ESC character.
  525.  
  526. Different editors use different methods, however, so if you're not using
  527. |nEDLIN|n or |nEDIT|n, you'll have to check the manual for your editor.  Once you
  528. know the method your editor uses to get control characters into the text,
  529. the possibilities are endless.  You could create a text file called HELLO
  530. .TXT which looks kind of like this:
  531.           ESC[31;40mHi there!                       (red)
  532.           ESC[37;40mHow are you?                  (white)
  533.           ESC[34;40mI am fine.                     (blue)
  534.           ESC[0m                         (back to normal)
  535. Now when you enter the command |nTYPE|n HELLO.TXT, your screen will show that
  536. text (not including the ugly part) in colors!  You can also use a similar
  537. technique in a batch file.  Just use the ECHO command, like this:
  538.           |nECHO|n ESC[31;40mHi there!
  539. And remember, with |nTYPE|n and |nECHO|n, you do not need to have |nECHO|n on during
  540.                            <page down> for more
  541.                             ANSI.SYS continued
  542. this part of the batch file like you do if you're using PROMPT $e to en-
  543. ter the ESCape character, because these commands will send the string to
  544. the screen even if DOS doesn't send the command to the screen.
  545.  
  546. Of course you use the same techniques to get the ESC character into a
  547. file, whether for the purpose of color, or for the purpose of macros.
  548.  
  549. To un-assign function keys that have been made into |nmacros|n using ANSI
  550. ESCape sequences, you just reassign them to their normal ASCII code.
  551. For example, if you had the <F10> key reassigned to "DIR";13, you just
  552. need to reassign it back to <F10>, like this:
  553.           |nPROMPT|n $e[0;68;0;68p
  554.  
  555. A few caveats about using ANSI to create |nmacros|n.  First, remember that
  556. DOS has its own functions for the <F1> through <F7> keys, so you don't
  557. want to reassign those.  But you can reassign <F8> through <F10>, as well
  558. as <Shift-F1> through <Shift-F10>, <Alt-F1> through <Alt-F10>, and <Ctrl-
  559. F1> through <Ctrl-F10>.  (Although if you're using DOS version 5 with the
  560.                            <page down> for more
  561.                             ANSI.SYS continued
  562. DOSKEY command, you don't want to reassign any keys that it uses either.)
  563. But not all of them!  The |nANSI.SYS|n device driver sets aside only a limit-
  564. ed amount of memory for holding these keystroke redefinitions.  I can't
  565. tell you how many keys you can assign, because it'll depend on the length
  566. of each macro you're using.  But if you have some keys assigned, and try
  567. to assign one more and it won't work, chances are that it's because that
  568. chunk of |nmemory|n is full.
  569.  
  570. One last thing.  Don't expect these macros to work anywhere except in DOS
  571. because most programs have their own uses for the function keys, and will
  572. take over control of them while you're in the program.  But as soon as
  573. you exit back to DOS, the |nmacros|n will work again.  Some programs will
  574. allow the ANSI reassignment to work though, and it can't hurt to try.
  575.  
  576. There are also some other very useful ANSI commands, which are probably
  577. listed in your DOS manual, and now that you know more about the ESC char-
  578. acter, you can probably understand that chapter in the manual.  And there
  579. are several shareware clones of |nANSI.SYS|n, such as NANSI.|nSYS|n, which work
  580. just the same way only much faster!  So check them out and have some fun!
  581.                            The |tAUTOEXEC.BAT|t File
  582.  
  583. The |nAUTOEXEC.BAT|n is a very special batch file.  As long as it is located
  584. in the root directory of the boo|1t disk, it will automatically be read by
  585. COMMAND.COM every time you restart your system.  (Exception:  If there is
  586. a SHELL statement in CONFIG.SYS, that does not have the /P switch, then
  587. |nAUTOEXEC.BAT|n will not be run after all.)  This file should contain any
  588. commands that you want to have executed with each reboot.
  589.  
  590. If you load a TSR from |nAUTOEXEC.BAT|n, it should always come earlier in
  591. the file than any PATH, SET, or PROMPT statements, if possible.  This is
  592. because every program, including TSRs, that runs under DOS gets its own
  593. copy of the environment.  The commands |nPATH|n, |nSET|n, and |nPROMPT|n put variable
  594. strings into the |nenvironment|n.  Therefore, if any of these commands are
  595. used before the TSRs are loaded, the TSR's copy of the |nenvironment|n uses
  596. more RAM than is needed.
  597.  
  598. This is not the case if the TSRs are loaded before any strings are placed
  599. into the |nenvironment|n.  Also, if you have any real need to place a string
  600.                            <page down> for more
  601.                            AUTOEXEC.BAT continued
  602. into the environment before loading a TSR, then it would be best if you
  603. could also remove that |nenvironment|n string again before loading the |nTSR|n.
  604.  
  605. The only trouble with placing the PATH statement near the end of AUTOEXEC
  606. .BAT, though, is that DOS won't be able to find the command files for the
  607. commands issued from the |nAUTOEXEC.BAT|n unless the full file specification
  608. for each command is listed on the command line of the batch file.  For
  609. example, to load a screen saver called EXPLOSIV into memory, the command
  610. would usually be simply EXPLOSIV if the directory containing the EXPLOSIV
  611. .COM file is listed on the |nPATH|n variable in the |nenvironment|n.  But since
  612. the |nPATH|n variable has not yet been set, the command must instead read as
  613. follows:
  614.           C:\UTIL\EXPLOSIV
  615. That is providing the EXPLOSIV.COM file is located in the \UTIL |ndirectory|n
  616. of the C: drive.  That way, DOS knows exactly where to find the command
  617. file, even without the |nPATH|n variable.  Sure, it's a little more typing to
  618. do, but that is not a real problem, since you only need to type this com-
  619. mand once, when you first create your |nAUTOEXEC.BAT|n file.
  620.                            <page down> for more
  621.                            AUTOEXEC.BAT continued
  622. If there is no |nAUTOEXEC.BAT|n file located in the root directory of the
  623. boo|1t disk, then DOS will |nprompt|n you for the date and time during each
  624. bootup, just as if you did have an |nAUTOEXEC.BAT|n file that contained just
  625. the DATE and TIME commands.
  626.  
  627. One thing you do not want to do, if there are any |sTSR|ss loaded from your
  628. |nAUTOEXEC.BAT|n, or if you're not sure, and there might possibly be any TSRs
  629. in there, is execute this file from the DOS prompt by entering AUTOEXEC
  630. as a command.  The reason is that any TSRs that are listed in there have
  631. already been loaded into memory, while you booted the computer, and so
  632. executing |nAUTOEXEC.BAT|n again without rebooting, would load a second copy
  633. of those TSRs into |nmemory|n.  Well some TSRs realize when they're being
  634. loaded a second time, and just won't go for it.  That's fine.  Other TSRs
  635. just go ahead and load a second copy.  That won't hurt anything, neces-
  636. sarily, but it sure would be a waste of |nmemory|n.  But other TSRs, when you
  637. try to load them twice, will lock up the whole computer.  Don't execute
  638. AUTOEXEC manually unless you're positive there are no TSRs in it.  So if
  639. you make a change to this file and want to see what happens, just reboot
  640. the computer.  But have a |nboot|n disk handy first, in case of trouble.
  641.                              The |tRMDIR|t Command
  642.  
  643. This command can also be abbreviated as RD.  What it does, is to ReMove
  644. any completely empty DIRectory.  Before you can remove a |ndirectory|n, you
  645. must remove all subdirectories from it (except the ". and .." entries),
  646. as well as all the files.
  647.  
  648. The main problem with removing directories is that sometimes a |ndirectory|n
  649. will contain files which have their Hidden, System, or Read-only attrib-
  650. utes turned on.  These files must first be deleted, but in order to del-
  651. ete them, those attributes must be removed with the ATTRIB command.
  652.  
  653. Another problem with removing directories is that you cannot remove the
  654. current |ndirectory|n.  You must change to a different |ndirectory|n first, using
  655. the CHDIR command.
  656.  
  657. See the section on the MKDIR command for the syntax of this one, since
  658. it's just the same.
  659.  
  660.  
  661.                            The |tDISKCOPY|t Command
  662.  
  663. This command will make an exact duplicate of a floppy disk.  It copies
  664. every single byte of data on the disk, including bad sector marks and
  665. the formatting codes.  For this reason you don't have to FORMAT the tar-
  666. get disk first, but you should anyway because if you don't, then you
  667. won't know whether the disk has any bad sectors, and you could end up
  668. copying good data to a bad sector.  If the target disk does have any bad
  669. sectors, you must not use it for a |nDISKCOPY|n purpose.  Because although
  670. the |nFORMAT|n command will mark out the bad sectors, the |nDISKCOPY|n command
  671. will ignore that, and copy the data to the target disk in the exact same
  672. way the data was sitting on the source disk.
  673.  
  674. If the target disk has been used before, it will be completely erased!
  675.  
  676. Another problem with this command is that it can only be used to copy one
  677. disk to another disk of the exact same size and capacity.  A whole lot of
  678. beginners get fooled by that.  Since |nDISKCOPY|n makes a sector-by-sector
  679. mirror image of the source disk, the target disk has to have the exact
  680.                            <page down> for more
  681.                             DISKCOPY continued
  682. same number of sectors as the source disk.  You can't |nDISKCOPY|n from a
  683. double-density to a high-density disk, or from a 3.5" disk to a 5.25"
  684. disk, or anything like that, or to or from a hard disk.
  685.  
  686. Now, some good points about this command:  For one, since it copies every
  687. byte on the source disk, it copies any System and/or Hidden files, which
  688. are otherwise impossible to copy without changing those attributes first.
  689.  
  690. Second, this command will copy files from the source disk to the target
  691. disk in the same logical drives, with the command |nDISKCOPY|n A: A: or the
  692. |nDISKCOPY|n B: B: command.  So you can copy files between disks of the same
  693. size even if you have both sizes of floppy drives, which is not possible
  694. with the COPY or XCOPY commands.  DOS will tell you when to switch |ndisks|n,
  695. so you just need to be careful to remember which disk is which.  It is a
  696. good idea to write-protect the source disk, so that even if you forget
  697. and put the source disk in when DOS asks for the target disk, the source
  698. disk will not get ruined.
  699.  
  700.  
  701.                               The |TSET|T Command
  702.  
  703. This command is used to place variable strings into the environment.  The
  704. syntax is:
  705.           |nSET|n VARIABLE=VALUE
  706. The variable name will be changed to uppercase, but the value will be
  707. placed into the |nenvironment|n in the same form it is entered.  The value
  708. and variable name can include any alphanumeric characters.
  709.  
  710. You can also use the |nSET|n command, with no parameters, to see what strings
  711. are already in the |nenvironment|n.
  712.  
  713. To remove a variable from the |nenvironment|n, just set it equal to nothing,
  714. like this:
  715.           |nSET|n VARIABLE=
  716.  
  717. If you use the |nSET|n command to set a variable that already exists in the
  718. |nenvironment|n, the new string replaces the old string.  There is no way
  719. outside of a batch file, to add another string to the end of a string
  720. that's already there, without retyping the part that's already there.
  721.                             |tDirectory|t Structure
  722.  
  723. A |ndirectory|n is like a Table of Contents that tells DOS where to find each
  724. file on the disk.  But a directory's size is set at the time a disk is
  725. |sFORMAT|sted, and cannot be enlarged.  A |ndirectory|n on a hard drive can only
  726. contain 512 entries.  If you try to add another file to a |ndirectory|n that
  727. is already full, you'll get a "|sdisk full|s" message.  Well surely a hard
  728. disk can hold more than 512 files?
  729.  
  730. Yes, it can, by putting subdirectory names in place of some of the file-
  731. names in the |ndirectory|n.  Subdirectories can have a number of files or
  732. other subdirectories in them that is limited only by the amount of disk
  733. space.  A subdirectory listing is just like any other file; if the file
  734. or the listing gets larger, it simply gets more space allocated to it.
  735. Only the root |ndirectory|n is limited in size.
  736.  
  737. There are also other reasons for breaking the files up into groups in
  738. subdirectories, rather than leaving them all in the |nroot|n |ndirectory|n.  For
  739. one thing, if you actually had 512 files in your |nroot|n |ndirectory|n, wouldn't
  740.                            <page down> for more
  741.                             Directory continued
  742. it be awfully hard to see what's there, with all those other filenames
  743. getting in the way?  Well it's hard for DOS to find a file that way, too.
  744. DOS has to look through the entire |ndirectory|n listing, just like you do,
  745. to find a file that you tell it to find.  So it's best to keep large pro-
  746. grams, that include many files, each in their own subdirectory, so that
  747. both you and DOS can find them more quickly.  (See also MKDIR.)
  748.  
  749. The easiest way to visualize a |ndirectory|n structure, is like a file room.
  750. The |troot|t |ndirectory|n (the main |ndirectory|n which covers the contents of the
  751. entire disk) is like the fileroom.  There are a bunch of file cabinets,
  752. and a few separate file folders laying around that have not been placed
  753. into the cabinets.  The file cabinets are like subdirectories.  Each sub-
  754. |ndirectory|n can contain further subdirectories.  These would be like the
  755. drawers in the file cabinets.  The drawers contain the files, just like
  756. subdirectories contain files.
  757.  
  758. The |tcurrent|t |ndirectory|n is like whichever file cabinet or drawer DOS is
  759. currently sitting in.  To CHange the |ncurrent|n |nDIRectory|n, you use the
  760.                            <page down> for more
  761.                             Directory continued
  762. |tCHDIR|t command, which can be abbreviated as CD.  The current |ndirectory|n is
  763. also called the |tdefault|t |ndirectory|n.  A |ndefault|n just means whatever will be
  764. used as parameters if the |nparameters|n are not specified.
  765.  
  766. The terms |ncurrent|n and |ndefault|n can also apply to drives, and have about
  767. the same meanings when they do.  The |ncurrent|n drive is the one whose drive
  768. letter is shown in your prompt.  But the |ncurrent|n |ndirectory|n is not always
  769. the same as the |ncurrent|n drive.  Each drive on your system has a |ncurrent|n
  770. |ndirectory|n at all times, even when that drive is not the |ncurrent|n one.  The
  771. |ncurrent|n |ndirectory|n, on a drive that is not |ncurrent|n, is the |ndirectory|n that
  772. would be |ncurrent|n if that drive were made |ncurrent|n.  Unless you change the
  773. |ncurrent|n |ndirectory|n on a disk, it is the root |ndirectory|n.  Each time you re-
  774. boot your system, the |nroot|n |ndirectory|n of each drive is the |ncurrent|n one.
  775.  
  776. You can even use the |nCHDIR|n or CD command to change the |ncurrent|n |ndirectory|n
  777. on a drive other than the |ncurrent|n one.  For example the CD C:\UTIL com-
  778. mand will change the |ncurrent|n |ndirectory|n on drive C: to \UTIL, whether C:
  779. is the |ncurrent|n drive or not.
  780.                            <page down> for more
  781.                             Directory continued
  782. The way to change the current drive is quite simple.  To make C: the cur-
  783. rent drive, the command is just C:.  To make A: the |ncurrent|n drive, the
  784. command A: would do it.  There is no way in DOS to change the |ncurrent|n
  785. drive, and the |ncurrent|n |ndirectory|n on that drive, all in one step.  It
  786. takes a C:, A:, etc. type of command as well as a CHDIR or CD command.
  787.  
  788. Another way to visualize a |ndirectory|n structure is like an upside-down
  789. tree.  The root |ndirectory|n is the trunk of the tree, the subdirectories
  790. are the main branches, which can be further divided into smaller bran-
  791. ches, and the leaves are the files.
  792.  
  793. The |tparent|t of the |ncurrent|n |ndirectory|n is the one that's next closer to the
  794. |nroot|n.  If the |ncurrent|n |ndirectory|n is a second-level subdirectory, then the
  795. |nparent|n is the first-level subdirectory immediately above it in the upside
  796. down tree.  If the |ncurrent|n |ndirectory|n is a first-level subdirectory, then
  797. the |nparent|n is the |nroot|n |ndirectory|n.
  798.  
  799. Referencing all these different drives and directories is not all that
  800.                            <page down> for more
  801.                             Directory continued
  802. difficult.  To tell DOS what disk you're talking about, you use the drive
  803. letter followed by a colon, as in C:.  Then you start out with a back-
  804. slash.  A leading backslash always refers to the root |ndirectory|n of the
  805. disk in question.  Then you tell the subdirectory names, in order, start-
  806. ing from the |nroot|n, that lead to the file.  Each subdirectory name is sep-
  807. arated from the others by another backslash.  Then you tell DOS the file-
  808. name, a period, and the filename extension.  |nDirectory|n names can be from
  809. one to eight characters, and filenames are the same.  The filename exten-
  810. sion can be from zero to three characters.  So, a full filename specific-
  811. ation might look like this:
  812.           C:\WORD\LETTERS\FILENAME.EXT
  813.  
  814. Of course it's best if you use really short words or abbreviations for
  815. your |ndirectory|n names, because that will save you a whole lot of typing
  816. over the years.  Also, the PATH variable in the environment can only be
  817. 127 characters long, so if your |ndirectory|n names are long, you'll only be
  818. able to fit a few of them into that variable.
  819.  
  820.                            <page down> for more
  821.                             Directory continued
  822. DOS can tolerate a lot of shortcuts when dealing with file specifica-
  823. tions.  Anything that is the default can be left out.  Suppose your cur-
  824. rent drive is C: and the current |ndirectory|n on C: is \DOS.  If you want
  825. to refer to the file C:\UTIL\FOO.BAR, you can just say \UTIL\FOO.BAR
  826. because if you leave out the drive letter, DOS will assume the |ncurrent|n
  827. drive, and in this case that's the drive you wanted anyway.
  828.  
  829. If your |ncurrent|n drive is still C: and the |ncurrent|n |ndirectory|n on the A:
  830. drive is \GAMES and you want to reference the file A:\GAMES\PLAY.EXE,
  831. then all you need to tell DOS is A:PLAY.EXE because if you leave out
  832. the |ndirectory|n, DOS will assume the |ncurrent|n |ndirectory|n on the drive men-
  833. tioned, which is the right one.  However, if you put a leading backslash
  834. in there, as in A:\PLAY.EXE, that wouldn't work because a leading back-
  835. slash always refers to the root |ndirectory|n, and PLAY.EXE is not in the
  836. |nroot|n, it's in the GAMES subdirectory which branches from the |nroot|n.
  837.  
  838. Now suppose your |ncurrent|n drive is still C: and drive C:'s |ncurrent|n direc-
  839. tory is still \DOS, and you want to refer to the file C:\DOS\GO.EXE, then
  840.                            <page down> for more
  841.                             Directory continued
  842. all you have to say is GO.EXE because C: and \DOS\ are both the |sdefault|ss.
  843.  
  844. Now let's say the current drive is C: and the |ncurrent|n |ndirectory|n is \ (the
  845. |sroot|s) and we want to tell DOS about that same file named C:\DOS\GO.EXE.
  846. This time we can still leave out the C: and also the leading \ because
  847. those are the defaults, and we can say DOS\GO.EXE.
  848.  
  849. If the |ncurrent|n |ndirectory|n were \UTIL instead then we would have to include
  850. the \ to remind DOS to start back up in the |nroot|n |ndirectory|n again, then
  851. look for the |ndirectory|n named DOS which is branching from a different spot
  852. in the |nroot|n.
  853.  
  854. Now how about the ". and .." directories that show up in every |ndirectory|n
  855. listing except the |nroot|n?  The .. entry stands for the parent |ndirectory|n.
  856. Well suppose that the |ncurrent|n drive is C: and the |ncurrent|n |ndirectory|n is
  857. \WORD\LETTERS\JOHN and we want to tell DOS to do something with a file in
  858. a |ndirectory|n called C:\WORD\LETTERS\BILL.  How do we do that?  Well, we
  859. have to first go up one level in the upside-down tree to LETTERS, and
  860.                            <page down> for more
  861.                             Directory continued
  862. then down one level to BILL.  This will look pretty complicated at first,
  863. but believe me, when you get used to it, it will be easier than typing
  864. out the whole name, C:\WORD\LETTERS\BILL\FILENAME.EXT.  Here's the short
  865. way:  ..\BILL\FILENAME.EXT.  If it weren't for the .. symbol that takes
  866. us up one level, then the shortest way to do it would have been \WORD\
  867. LETTERS\BILL\FILENAME.EXT.  So, even though the .. symbol will take a bit
  868. of getting used to, it's worth it!
  869.  
  870. If you don't have a hard drive, you might think that you will never be
  871. interested in directories.  Guess again!  Remember that the root direc-
  872. tory of any disk is limited as to how many entries it can hold.  For 360K
  873. and 720K disks, that limit is 112 files, and for 1.2M and 1.44M |ndisks|n, it
  874. is 224.  If you want to have more files than that on a disk, you have to
  875. create a subdirectory on the disk to put the files into.  Because al-
  876. though the |nroot|n |ndirectory|n is of a limited size, a subdirectory can con-
  877. tain an unlimited number of files.
  878.  
  879. If you have more than 150 files in any |ndirectory|n, you should divide that
  880.                            <page down> for more
  881.                             Directory continued
  882. |ndirectory|n into subdirectories, so that DOS can find your files faster.
  883.  
  884. Now remember that even though it's easier for you to think of directories
  885. in terms of file rooms, and upside-down trees, and stuff, in reality all
  886. they are is files.  They're just files which contain information about
  887. other files.  For example here's the |ndirectory|n entry for my |nAUTOEXEC.BAT|n:
  888.           0192(0000) 41 55 54 4F 45 58 45 43 42 41 54 00 00 00 00 00
  889.           0208(00D0) 00 00 00 00 00 00 89 BE DC 16 6C 01 5D 03 00 00
  890. Well the eleven bytes starting with 41, 55, 54, if you convert those hex
  891. numbers to decimal and then look them up in the ASCII chart, you'll find
  892. that they spell AUTOEXECBAT.  (If the filename were less than eight let-
  893. ters long, there would be one or more 20s between the name and extension
  894. of the file.)  The next number is the attribute byte, and since it says
  895. 00, you know that this file doesn't have any of its attributes turned on.
  896. The four |nbytes|n 89, BE, DC, 16, are the date and time of the most recent
  897. update to the file.  Also in that |ndirectory|n entry somewhere are the size
  898. of the file (number of |nbytes|n in length) and the number of the first clus-
  899. ter of the file (where it's located on the disk).  Well, a |ndirectory|n is
  900. just a file that holds an entry like that for each file in the |ndirectory|n.
  901.                             The |tBACKUP|t Command
  902.  
  903. How important is it to |nbackup|n your hard disk?  Well, how hard is it for
  904. you to get your files all organized the way you want them?  How hard is
  905. it for you to create your data files in your word processor, spreadsheet,
  906. database, or whatever other type of programs you use?  Do you want to
  907. take the very real chance that it could all be lost, and you'll be right
  908. back to square one, when there's something you can do to prevent it?  Of
  909. course backing up is a pain!  Most worthwhile things are.  But once you
  910. have done it a couple times, it won't be confusing anymore.  You'll get
  911. the hang of it in no time flat.  Make it a habit, and just like all hab-
  912. its, it will become second nature.
  913.  
  914. You have to be really careful to stick a label onto each disk as you're
  915. doing the |nbackup|n, because the RESTORE command, which is the only way to
  916. read |nbackup|n disks, has to have the |ndisks|n in the right order to be able to
  917. put your files back together later after your hard drive has crashed.  Be
  918. really sure that you know the correct order of the |nbackup|n |ndisks|n.  Include
  919. the date and time on the labels too!
  920.                            <page down> for more
  921.                              BACKUP continued
  922. Not too many people use the DOS |nBACKUP|n command, but it's fine for a while
  923. 'til you get something better.  The syntax is |nCOMMAND|n SOURCE TARGET SWIT-
  924. CHES just like most any other DOS command.  So let's take those parts one
  925. at a time.  The command is |nBACKUP|n, or C:\DOS\BACKUP, or A:\BACKUP, depen-
  926. ding on where the executable file is located.
  927.  
  928. The source is what files you want to |nbackup|n.  If you want to |nbackup|n the
  929. whole disk, you must perform this command from the root directory of the
  930. disk, and the source would then be C:\*.*, which means everything in the
  931. |nroot|n |ndirectory|n.  Later we'll get to the part of the command that tells
  932. DOS to also include the subdirectories of the |nroot|n |ndirectory|n.
  933.  
  934. Now the target is where you want the |nbackup|n files to end up.  That's just
  935. a drive letter, like A:.
  936.  
  937. Now for the harder part.  Don't worry, it's not that hard.  The |nBACKUP|n
  938. command has quite a few switches from which to choose.  Here they are:
  939.           /S  /M  /A  /D:05-16-91  /T:10.02  /F  /L:C:FILENAME.EXT
  940.                            <page down> for more
  941.                              BACKUP continued
  942. So, what on earth do all those things do?  Well the /S switch is for
  943. subdirectories.  That's what tells DOS to |nbackup|n not only the current or
  944. specified directory, but also all of the subdirectories anywhere under
  945. that |ndirectory|n.
  946.  
  947. The /M switch checks the Archive attributes for all the files, and only
  948. backs up files that have been created or modified since the last |nbackup|n
  949. was done.  You don't want to use this switch the first time you |nbackup|n,
  950. but only for incremental backups.  (Incremental means just the files that
  951. have changed since the last time.)
  952.  
  953. The /A switch tells DOS not to erase the files that are already on the
  954. target disk, the way it usually happens, but to leave them there, and
  955. just add the files now being backed up, to the space that is left on the
  956. disk from the previous |nbackup|n.  So obviously this switch is only for in-
  957. cremental backups also.  If your last incremental |nbackup|n took 5.2 disks,
  958. then you still have 80% of that last disk empty.  Well the /A switch will
  959. allow you to fill up the empty space on that disk for this incremental
  960.                            <page down> for more
  961.                              BACKUP continued
  962. |nbackup|n, instead of making you start fresh on a new disk.
  963.  
  964. The /D:05-16-91 switch tells DOS to only |nbackup|n files that were last mod-
  965. ified on or after that date.  You don't want to use that switch with the
  966. /M switch because they'd both be trying to do the same thing in different
  967. ways.  In fact, I'd never trust this switch, in case the system clock had
  968. been wrong at some point.  Because then you'd end up backing up the wrong
  969. files all together!  The /T:10.02 switch which didn't appear in DOS until
  970. version 3.3, allows you to be even more specific, about the time.  It can
  971. tell DOS to only |nbackup|n files modified at or after that time of day.  Do
  972. not forget to convert times to military format though, because if you en-
  973. ter 3.00 then you're going to get 3 am.  If you want to say 3 pm then use
  974. 15.00.  Don't even think about using the /T switch without using /D also.
  975.  
  976. The /F switch tells DOS to FORMAT the disks before backing up files to
  977. them.  If the |nFORMAT|n command file is located in a directory listed in the
  978. PATH variable in the environment, then the |nBACKUP|n command can |nFORMAT|n the
  979. |ndisks|n while it's backing up.
  980.                            <page down> for more
  981.                              BACKUP continued
  982. This switch didn't exist until DOS version 3.3, so before that, we had to
  983. FORMAT a whole stack of disks before we even started backing up.  Then
  984. what would happen, is that we hadn't formatted enough |ndisks|n, and we would
  985. run out, and do you know what that used to mean to the |nBACKUP|n process?
  986. That would mean we would have to start over completely from the beginning
  987. after we went and formatted some more |ndisks|n.  Because there isn't any way
  988. to tell the |nBACKUP|n command to pick up where we left off before we ran out
  989. of formatted |ndisks|n.  Oh yes, the /F switch was welcomed by all DOS users!
  990.  
  991. Ok, last one, the /L switch.  This one also didn't exist until version
  992. 3.3 of DOS.  What it does is it creates a log file of what the |nBACKUP|n
  993. command did.  That way, after you've backed up your whole disk and you
  994. have a stack of 38 floppy |ndisks|n, you can tell which files are on which
  995. floppies.  Because the |nBACKUP|n command concatenates all the files into one
  996. big file, which fills up the whole disk, so you can't tell from the dir-
  997. ectory listing which files are where!  If you leave out the path and
  998. filename info in the /L switch, |nBACKUP|n will automatically use the default
  999. name of |nBACKUP|n.LOG and put it in the root directory of the source disk.
  1000.                            <page down> for more
  1001.                              BACKUP continued
  1002. In my opinion, the worst thing about the DOS |nBACKUP|n command is that there
  1003. are only two ways to do it.  You can do a full |nbackup|n which backs up the
  1004. whole drive, and each time after that you can do an incremental |nbackup|n of
  1005. just the files that have changed since the last time you backed up.
  1006.  
  1007. Know what that means?  That means that when it comes time to RESTORE the
  1008. files to the hard drive, you need to have that original full |nbackup|n's set
  1009. of floppy disks, and you also need the |ndisks|n from each and every increm-
  1010. ental |nbackup|n you've done since then.  If you're backing up twice every
  1011. week like you should be, then after a year you've got over a hundred sets
  1012. of |nbackup|n floppies.
  1013.  
  1014. True, each set after the first one, might have been only one or two |ndisks|n
  1015. but still, that's a tremendous amount of |ndisks|n to mess with!  You have to
  1016. keep them all safe and secure until such time as you do another complete
  1017. |nbackup|n.  After that time, but not until then, you can re-use all of the
  1018. |ndisks|n from the full |nbackup|n and the incremental backups.  What a pain!
  1019.  
  1020.                            <page down> for more
  1021.                              BACKUP continued
  1022. Some commercial |nbackup|n programs have another choice in |nbackup|n strategies,
  1023. though, and PC Tools, for example, calls it Differential |nbackup|n.  Here is
  1024. what it does:
  1025.  
  1026. The first full |nbackup|n you do backs up every file you have, right?  And
  1027. it also turns off the Archive attributes for all the files it backed up.
  1028. Now you've probably only got a few dozen files that are ever going to
  1029. change, if you don't go out and buy any more software.  All these files
  1030. that are ever going to change will probably fit on one or two disks.
  1031.  
  1032. Well the Differential |nbackup|n method backs up all the files that have the
  1033. Archive attribute set, but it doesn't turn it back off!  That way, the
  1034. next time you do a Differential |nbackup|n, it backs up everything that has
  1035. changed since the original full |nbackup|n!  That means you don't have to
  1036. keep every single set of Differential |nbackup|n |ndisks|n you've made!
  1037.  
  1038. So, on week one you do a full |nbackup|n.  On week two you do a Differential
  1039. |nbackup|n.  On week three you do another Differential |nbackup|n.  Now on week
  1040.                            <page down> for more
  1041.                              BACKUP continued
  1042. four you can re-use the disks that you used for week two's |nbackup|n, and
  1043. on week five you can re-use the week three |nbackup|n |ndisks|n!  You only need
  1044. to keep your original full |nbackup|n |ndisks|n, and the two most recent sets of
  1045. Differentials!  (The reason you want to keep last week's set as well as
  1046. this week's set is not because there are any files on last week's that
  1047. aren't on this week's, but only because in case you've made a big goof
  1048. in data entry this week, you can RESTORE last week's copy of the file,
  1049. from before you made the big goof.)
  1050.  
  1051. So that's just one of the reasons you want to get some other |nbackup|n pro-
  1052. gram besides the DOS |nBACKUP|n command, so you can do Differential backups
  1053. instead of just incremental ones.
  1054.  
  1055. One thing you really want to do whenever you're about to use the |nBACKUP|n
  1056. or |nRESTORE|n commands, is to reboot the computer without loading any |sTSR|ss
  1057. into memory, because they can seriously interfere with the operation of
  1058. these two commands.  That goes for the DOS commands, or any other |nbackup|n
  1059. program.  And in most cases, you can only restore a |nbackup|n using the RE-
  1060. STORE command from the same version of DOS that made the |nbackup|n.
  1061.                         |tMemory|t and Related Concepts
  1062.  
  1063. First of all, when many beginners get their first "Out of |nmemory|n" error
  1064. message, they think that deleting files from their hard drive will help.
  1065. But |nmemory|n has nothing to do with hard drive space.  |nMemory|n means the
  1066. |tRAM|t (Random-Access |nMemory|n) chips inside the computer case, where the
  1067. computer stores data while it's being processed.  Disk space is where
  1068. data is stored while it's not being used.  It's like your file cabinet,
  1069. where you keep your files, out of your way, while you're not working on
  1070. them.  The |nmemory|n is like the surface of your desk, where the computer
  1071. keeps the files it's working on at the moment.  The size of your file
  1072. cabinet has nothing to do with the size of your desktop.
  1073.  
  1074. There are several different kinds of |nRAM|n.  The only kind DOS knows how to
  1075. use for running programs, is |tconventional|t |nmemory|n.  The most |nconventional|n
  1076. |nmemory|n a computer can have, is 640K.  (There is an exception to this just
  1077. like there are exceptions to many rules when it comes to the subject of
  1078. |nmemory|n.  We'll get to that exception later.)  DOS just doesn't know how
  1079. to access any more than that.  So even if you have 6 Megs of |nRAM|n in your
  1080.                            <page down> for more
  1081.                              Memory continued
  1082. computer, DOS can still only use 640K of it.
  1083.  
  1084. By the way, you can think of |tbytes|t as being about the same as characters
  1085. of data.  A text file that contains 3564 |nbytes|n of data has pretty close
  1086. to 3564 characters in it.  (You have to also count 2 extra |nbytes|n per line
  1087. for the carriage return and linefeed characters, and there's also an End-
  1088. of-File character, and maybe a few other things too.  But it comes out
  1089. pretty close to the same.)  K means kilobyte, which is 1024 |nbytes|n.  M or
  1090. Meg means megabyte which is 1024K or 1,048,576 |nbytes|n.  (See also Binary.)
  1091.  
  1092. Part of the 640K is used up by DOS itself.  DOS is in |nmemory|n at all times
  1093. or else your computer just wouldn't know how to do anything.  But that's
  1094. ok, because when it says on a package of software that it requires 640K
  1095. of RAM, it doesn't mean it needs the 640K all to itself.  It means that
  1096. it just needs for your computer to have that much installed.  The soft-
  1097. ware makers know that you have to have DOS loaded into |nmemory|n.
  1098.  
  1099. Actually DOS does know how to access 1M of |nmemory|n, not just 640K.  But
  1100.                            <page down> for more
  1101.                              Memory continued
  1102. the |nmemory|n addresses from 640K to 1M are reserved for use by such things
  1103. as the |nmemory|n on your video card, the |nmemory|n on your disk controller, the
  1104. BIOS, |nROM|n, and other assorted things.  These things are taking up some
  1105. space in the 640-1024K area of |nmemory|n, but most of that space is empty.
  1106. This space is called the |tupper|t |nmemory|n blocks.  On most machines, there is
  1107. no motherboard RAM in this area unless you have |nshadow|n |nRAM|n enabled.  So
  1108. since this area of |nmemory|n addresses is reserved for that other stuff, the
  1109. motherboard |nmemory|n skips these addresses, and continues on above the one
  1110. meg |nmemory|n address.  Many people just don't understand this, even those
  1111. who claim to be experts.  But this is why a computer that only has 1M of
  1112. |nRAM|n does have extended |nmemory|n above the 1M address--because the 384K of
  1113. |nmemory|n above the first 640K does not use the 640-1024K area since that
  1114. area is reserved (unless the 384K is configured as |nshadow|n |nRAM|n, that is).
  1115.  
  1116. What on earth is |tshadow|t |nRAM|n, you say?  Well you see, normally the video
  1117. |nBIOS|n is in a very slow type of |nmemory|n called Read-Only |nMemory|n, which is
  1118. also called |tROM|t.  On many computers, you can enable |nshadow|n |nRAM|n which
  1119. means that when you start the computer up, it will copy the video |nROM|n in-
  1120.                            <page down> for more
  1121.                              Memory continued
  1122. to some RAM that it has re-mapped to addresses between 640K and 1M, and
  1123. your screen writes will be faster, because |nRAM|n is faster than ROM.
  1124.  
  1125. So when shadow |nRAM|n is enabled, some of the |nRAM|n above the 1M line will be
  1126. re-mapped to the addresses between 640K and 1M so that DOS will be able
  1127. to access it.  Because DOS just can't access anything above 1M.  But if
  1128. |nshadow|n |nRAM|n is disabled, then all the motherboard |nRAM|n is either at 0-640K
  1129. or else at 1M or above.  The 640-1024K |nmemory|n area is "just there", on
  1130. all computers, even if you only have 512K of motherboard |nRAM|n.
  1131.  
  1132. If you have 1M of |nRAM|n on your motherboard, then most likely, that is, if
  1133. |nshadow|n |nRAM|n is disabled or your computer doesn't do |nshadow|n |nRAM|n, then its
  1134. addresses are 0-640K and 1024-1408K.  That's right, even though you only
  1135. have one meg, you have 384K of |nmemory|n above the one meg address mark.  So
  1136. when you read in the manual that a RAMdisk can use extended |nmemory|n above
  1137. one meg that doesn't mean you can't use the |nRAMdisk|n because you only have
  1138. one meg, because your 384K probably is above one meg.
  1139.  
  1140.                            <page down> for more
  1141.                              Memory continued
  1142. Well actually, there are some programs that can make a little bit of the
  1143. upper |nmemory|n blocks available for programs, but at the expense of graph-
  1144. ics.  These programs (Quarterdeck's VIDRAM is one) can take some of the
  1145. RAM that's on your video board and remap it so that DOS can use it.  That
  1146. can give you over 700K of conventional |nmemory|n to run programs in, if you
  1147. have a VGA board!  Trouble is, when you have things set up that way, you
  1148. can't use any graphics because your video board's |nmemory|n is being used
  1149. for programs.  You can only use text-based programs in this case.  But
  1150. this program can be temporarily disabled to give you back the graphics.
  1151.  
  1152. There is also another way to use the |nupper|n |nmemory|n blocks.  On any 386 or
  1153. newer machine, and on a 286 that has a LIM 4 hardware-compatible expanded
  1154. |nmemory|n, and on a |n286|n that has shadow |nRAM|n capability, all of which are ab-
  1155. le to remap |nmemory|n, there are programs (like Quarterdeck's QRAM) that can
  1156. move some of your |sTSR|ss into |nmemory|n that has been remapped into addresses
  1157. in this area.  This way you can free up as much of your |nconventional|n mem-
  1158. ory as possible and still be able to run your favorite TSRs!
  1159.  
  1160.                            <page down> for more
  1161.                              Memory continued
  1162. Uh-oh, here comes yet another contradiction.  I said that there's no way
  1163. for DOS to access any |nmemory|n above the one meg address for program use.
  1164. That's mostly true, but not totally.  DOS has a program called |tHIMEM.SYS|t
  1165. which, when installed on a |n286|n or newer computer, can allow DOS to reach
  1166. the first 64K block of |nextended|n |nmemory|n.  This block of |nmemory|n is called
  1167. |thigh|t |nmemory|n.  It still can't be used as conventional |nmemory|n, but some
  1168. programs can make good use of it.  Some programs, including DOS version
  1169. 5.0, can put part of their own code into |nhigh|n |nmemory|n to release the space
  1170. they would otherwise have been using up in the |nconventional|n |nmemory|n area.
  1171.  
  1172. Now here comes a really troublesome contradiction!  Some people refer to
  1173. |nhigh|n |nmemory|n as upper |nmemory|n blocks, and refer to the |nupper|n |nmemory|n blocks
  1174. as |nhigh|n |nmemory|n.  So if someone is talking about |nhigh|n |nmemory|n or |nupper|n mem-
  1175. ory blocks, you won't ever know whether they're talking about what I've
  1176. called |nhigh|n |nmemory|n, or what I've called |nupper|n |nmemory|n blocks, unless you
  1177. ask them what they mean.  Isn't that going to be fun?
  1178.  
  1179. |tExtended|t |nmemory|n is RAM that's above the one meg mark.  DOS can't use it
  1180.                            <page down> for more
  1181.                              Memory continued
  1182. for anything.  Because extended |nmemory|n can only be accessed through pro-
  1183. tected mode, and DOS can't go into protected mode, ever.  But there are a
  1184. few programs that can use |nextended|n |nmemory|n.  A RAMdisk, a print spooler,
  1185. or a disk cache can access |nextended|n |nmemory|n without any assistance from
  1186. any |nmemory|n management program.  There are also programs which have been
  1187. written especially to be able to use |nextended|n |nmemory|n, but they are few
  1188. and far between, except for a type of thing called a |nmultitasker|n.
  1189.  
  1190. A |tmultitasker|t is a very complicated sort of a program which does a very
  1191. exciting thing on a 386 or newer computer.  It can take advantage of a
  1192. mode called Virtual 8086 mode.  In V86 mode, a |nmultitasker|n can set aside
  1193. 640K of |nextended|n |nmemory|n and run one copy of DOS there, and set aside an-
  1194. other 640K chunk and run another copy of DOS there and set aside another
  1195. 640K chunk and run yet another copy of DOS, and all of these copies of
  1196. DOS each think that they're running in the bottom 640K of conventional
  1197. |nmemory|n!
  1198.  
  1199. Each copy of DOS is actually running in |treal mode|t, but the |nmultitasker|n
  1200.                            <page down> for more
  1201.                              Memory continued
  1202. keeps each Virtual Machine protected from what the others might be doing,
  1203. so that one Virtual Machine doesn't try to access some part of |nmemory|n
  1204. that another program in another Virtual Machine is using.  That's basic-
  1205. ally what |tprotected mode|t means.
  1206.  
  1207. The reason Virtual 8086 mode is named that, is because 8086 is the name
  1208. of the CPU in the first personal computer, and in V86 mode the 386 is
  1209. pretending to be a bunch of small processors instead of one big one.
  1210.  
  1211. Well the multitasker is also in charge of dividing up the CPU's time.
  1212. In multitasking, there really isn't more than one program running at the
  1213. same time.  A |nCPU|n can't possibly do more than one thing at a time.  But
  1214. since the |nCPU|n can do things so much faster than the rest of the hardware
  1215. can, the |nmultitasker|n can give one slice of the |nCPU|n's time to one program
  1216. while another program is waiting for data to be retrieved from the hard
  1217. drive and a third program is waiting for you to finish typing a command,
  1218. then the |nmultitasker|n gives the next timeslice to another program while
  1219. the first one is waiting for the printer to finish what it's printing and
  1220.                            <page down> for more
  1221.                              Memory continued
  1222. you're still typing at the keyboard on the third program, and on and on.
  1223. The CPU is never doing more than one thing at a time, but since it swit-
  1224. ches so rapidly among its chores, it just looks like it is.
  1225.  
  1226. Some examples of really good |smultitasker|ss are VM/386, DESQview/386, and
  1227. Windows/386, although personally I would never recommend Windows to any-
  1228. one.  Just my own opinion.  I use VM/386 and I am very happy with it, al-
  1229. though I must warn you that program is quite picky about what hardware it
  1230. is used on.  But if it will work on your system, it does a great job.
  1231.  
  1232. Most anything that uses extended |nmemory|n needs an |neXtended|n |nMemory|n Specif-
  1233. ication (|tXMS|t) driver to run.  But on the other hand, most things that use
  1234. |nextended|n |nmemory|n have their own driver built right in.  So you don't hear
  1235. too much about |nextended|n |nmemory|n managers.  HIMEM.SYS is one.
  1236.  
  1237. |tExpanded|t |nmemory|n, however, is another matter!  Everybody's always talking
  1238. about how to manage |nexpanded|n |nmemory|n.  So what is it?  Well, on a 8088 or
  1239. 286 machine, it's a board full of |nmemory|n chips with special hardware that
  1240.                            <page down> for more
  1241.                              Memory continued
  1242. can dynamically remap the |nmemory|n addresses.  (This remapping capabili-
  1243. ty is built into the 386 and higher CPU, so it can use expanded |nmemory|n
  1244. without the special |nexpanded|n |nmemory|n board.)  What do I mean by remap?
  1245. Well, if you're looking out a window, you can see one small part of the
  1246. world outside, right?  But if you move to the other side of the room and
  1247. look out the same window, you can see a slightly different part of the
  1248. outside world.  (The "window" is generally called a "page frame".)  Ex-
  1249. panded |nmemory|n is sort of like that.  It puts the window into the upper
  1250. |nmemory|n where DOS can access it, and then it does some "bank switching".
  1251. You see, the |nexpanded|n |nmemory|n manager can see all of the |nexpanded|n |nmemory|n,
  1252. even though DOS can't see any of it because it's not in a location that
  1253. the |nCPU|n can address.  So the |nexpanded|n |nmemory|n manager finds out what data
  1254. DOS wants next, and it switches the bank of |nmemory|n that contains that
  1255. data, into the window where DOS can get it.  It just keeps doing that,
  1256. whenever DOS wants some data it changes the angle through which DOS is
  1257. looking out the window, so that DOS sees the data it's looking for.
  1258.  
  1259. Examples of |nexpanded|n |nmemory|n managers are EMM386, which comes with recent
  1260.                            <page down> for more
  1261.                              Memory continued
  1262. versions of DOS, and QEMM which comes from Quarterdeck.  Each of these,
  1263. as well as most any expanded |nmemory|n manager that's still alive these days
  1264. supports what's called the |tEMS|t (|nExpanded|n |nMemory|n Specification) 4.0, also
  1265. known as |tLIM|t (Lotus-Intel-Microsoft) 4.0.
  1266.  
  1267. There are a lot more programs which have been designed to use |nexpanded|n
  1268. |nmemory|n than those that can use extended |nmemory|n.  Not only is |nexpanded|n
  1269. |nmemory|n probably easier to write a program for, but also because it's not
  1270. possible for an 8088 processor to use any |nextended|n |nmemory|n.  There are
  1271. still a lot of 8088s in use, and software publishers like to be compat-
  1272. ible with as many computers as possible.  So software companies don't
  1273. like to use |nextended|n |nmemory|n, even though it is more efficient.  |nExpanded|n
  1274. |nmemory|n can be used on any computer, whereas |nextended|n can only be used on
  1275. a 286 or higher CPU.
  1276.  
  1277. Now how do you remember the difference between the words |nexpanded|n and
  1278. |nextended|n?  Well you know that the word |nexpanded|n means that something has
  1279. gone from being narrow, to being wide.  Well |nexpanded|n |nmemory|n is like
  1280.                            <page down> for more
  1281.                              Memory continued
  1282. that, because DOS just sees this little window of |nmemory|n, and there is
  1283. really a wide chunk of |nmemory|n being viewed through that window.  The word
  1284. extended means that something has gone from being short, to being long.
  1285. Well |nextended|n |nmemory|n is like that, because without it, there is just a
  1286. short list, from 0 to 1024K, of |nmemory|n locations that can be accessed.
  1287. But with it, there is a long list, from 0K all the way up to 16 megs or
  1288. more, in a row, that can be accessed.  (Not by DOS, of course, but just
  1289. by the computer.)
  1290.  
  1291. Now DOS version 5 includes some great |nmemory|n management programs.  First
  1292. of all, it knows how to use the High |nMemory|n Area (HMA) to load its own
  1293. kernel into, as long as you have HIMEM.SYS installed as the first line of
  1294. CONFIG.SYS, and use the DOS=HIGH command to tell DOS to go |nhigh|n.  That
  1295. DOS kernel that goes |nhigh|n takes up about 45K of |nmemory|n so when it's |nhigh|n,
  1296. that frees up 45K of conventional |nmemory|n, that DOS would otherwise have
  1297. been using.  Also, when DOS goes |nhigh|n the BUFFERS go |nhigh|n too, if you
  1298. don't specify too many of them, so that frees up even more |nconventional|n
  1299. |nmemory|n.  This will work on any computer that has any |nextended|n |nmemory|n.
  1300.                            <page down> for more
  1301.                              Memory continued
  1302. Now on a 386 or higher computer, which has built-in |nmemory|n mapping capa-
  1303. bilities, DOS version 5 can do an even better job.  First, the HIMEM.SYS
  1304. device driver converts the extended |nmemory|n to XMS |nmemory|n (that just means
  1305. |nextended|n |nmemory|n that's being managed by an |neXtended|n |nMemory|n Specification
  1306. version 2.0 driver, which |nHIMEM.SYS|n is).  Now the EMM386 |ndevice driver|n
  1307. can take that |nXMS|n |nmemory|n, on a |n386|n, and make it pretend to be expanded
  1308. |nmemory|n (which is called |nexpanded|n |nmemory|n emulation).  So now that this
  1309. |nmemory|n is doing the job of |nexpanded|n |nmemory|n, it can be remapped into some
  1310. empty addresses between 640K and 1024K, where DOS can access it, and then
  1311. |sTSR|ss and device drivers can be loaded into it, so that they aren't taking
  1312. up any conventional |nmemory|n anymore.
  1313.  
  1314. In order to make all this happen, if you have a |n386|n with |nextended|n |nmemory|n,
  1315. you just use the |nHIMEM.SYS|n, |nEMM386|n, and DO|1S commands in CONFIG.SYS to
  1316. make the Upper |nMemory|n Blocks available, and then use DEVICEHIGH commands
  1317. instead of DEVIC|1E commands, and use the LOADHIGH command for TSRs.  To
  1318. make this work on a 286, you need the special shadow RAM capability, or
  1319. a LIM 4 hardware-compatible |nexpanded|n |nmemory|n board, along with a program
  1320. such as Quarterdeck's QRAM.
  1321.                              What Is the |tCPU|t?
  1322.  
  1323. The |nCPU|n is the computer's brain.  It stands for Central Processing Unit.
  1324. It is just a little square chip about an inch and a half on each side, if
  1325. you can believe that, and that's where all the computing takes place.
  1326. The |nCPU|n for the first set of personal computers was the 8086, which was
  1327. put into an IBM computer model which was named the PC.  Next came the
  1328. |t8088|t processor, and that one went into a model called the |tXT|t.  That one
  1329. cannot in any way access memory above the one meg address, but it can use
  1330. expanded |nmemory|n.  After that came the 80286 |nCPU|n, which is usually abbrev-
  1331. iated as |t286|t.  This was the first computer that could take advantage of
  1332. extended RAM.  It went into a model of computer called the |TAT|T.  After
  1333. that, the |t386|t and 486, now even 586, came along.  Who knows, by the time
  1334. you read this, there could be an 80686 processor being developed!
  1335.  
  1336.  
  1337.  
  1338.  
  1339.  
  1340.  
  1341.                              What Is a |tCache|t?
  1342.  
  1343. There are two different kinds of |ncache|n.  The most common one is a hard
  1344. drive |ncache|n, and that is a piece of software which, when you install it
  1345. into memory, sets aside a large chunk of extended or expanded |nmemory|n to
  1346. do the caching.  Now what it does, is every time you read something off
  1347. the hard drive, it keeps it in this chunk of |nmemory|n, and then when you
  1348. need that piece of info again, you get it from the |ncache|n which, since it
  1349. is in RAM, is a lot faster than going back to the hard drive to get that
  1350. piece of data again.  The |ncache|n that comes with recent versions of DOS
  1351. is called SMARTDRV.SYS.
  1352.  
  1353. Most caches also do what's called look-ahead, which means that every time
  1354. you get some data from the hard drive, it also gets the next one or two
  1355. sectors of data, and puts that in the |ncache|n also.  So if you're running a
  1356. type of program that does a lot of sequential disk access, then the next
  1357. time the program needs more data, it's probably already in the |ncache|n be-
  1358. cause the next data it needs is what came right after the last data it
  1359. needed, which the |ncache|n already looked ahead to get.
  1360.                            <page down> for more
  1361.                               Cache continued
  1362. Another thing that most caches do, is pay attention to the frequency with
  1363. which each piece of data is requested by the application.  I mean when
  1364. you've been running the computer for a while since the last time you re-
  1365. |sboot|sed, then a whole lot of data has been read from the disk, and the
  1366. |ncache|n gets filled up.  Well instead of the |ncache|n just dumping the oldest
  1367. data to make room for the next data that gets requested from the hard
  1368. drive, the |ncache|n instead dumps the piece of data that has so far been
  1369. asked for the smallest number of times.  Now if your |ncache|n is all filled
  1370. up with stuff that keeps getting requested over and over again, then the
  1371. |ncache|n is not going to dump it for new info that's only been requested
  1372. once.  If that same piece of new info gets requested several times, so
  1373. the |ncache|n figures it must be a pretty important piece of info, then and
  1374. only then will the |ncache|n dump some older piece of often-requested info to
  1375. let the new often-requested info in.  So that's one reason why BUFFERS
  1376. are still sort of important, even if you have a |ncache|n.  Because buffers
  1377. only keep the most recently accessed data, regardless of the frequency
  1378. with which it is requested.  So it's possible to have data in the buffers
  1379. that isn't in the |ncache|n, so you can save an extra trip to the hard drive
  1380.                            <page down> for more
  1381.                               Cache continued
  1382. by having some BUFFERS.  Another reason you need to have a few buffers
  1383. even if you have a |ncache|n, is that most caches don't pay any attention to
  1384. floppy drives.  They only work on hard drives.  Well the buffers will do
  1385. a little bit of caching with the |nfloppy|n drive info.  And one more reason
  1386. for buffers even with a |ncache|n, is that sometimes you need to disable the
  1387. |ncache|n, like when you're about to optimize your hard drive (that means fix
  1388. the fragmented files).  If the |ncache|n is disabled for a while, you'll be
  1389. glad that you have a few buffers loaded.  But I do mean just a few, be-
  1390. cause with a |ncache|n, which does basically pretty much the same thing as
  1391. the buffers, the memory that having a lot of buffers takes up, is not
  1392. worth it.  Unless you've never had a shortage of conventional |nmemory|n in
  1393. the first place, or if you have DOS version 5, where buffers go into the
  1394. high |nmemory|n area and don't take up any |nconventional|n RAM anyway.
  1395.  
  1396. Now one thing you need to remember.  You'd think that if a large |ncache|n
  1397. is good, then a huge |ncache|n would be even better, right?  Wrong.  A |ncache|n
  1398. that's too large slows things down instead of speeding them up, because
  1399. looking through all that data that's stored in the |ncache|n can take longer
  1400.                            <page down> for more
  1401.                               Cache continued
  1402. than it would have taken to just get the data from the hard drive!  So
  1403. pay attention to the manual for your |ncache|n program, and if it says a cer-
  1404. tain size is recommended, then use that size until you know more about
  1405. the subject and have some spare time to go testing things with a bench-
  1406. mark program.
  1407.  
  1408. There is one thing to watch out for with a disk |ncache|n, though.  Remember
  1409. that the information in the |ncache|n is just a copy of what's on the disk.
  1410. Just because the CHKDSK command tells you that your hard drive is trashed
  1411. does not necessarily mean that it's true!  Suppose you're playing around
  1412. with trying to load a new TSR into upper memory.  Something goes wrong
  1413. and the |ncache|n in the extended |nmemory|n gets trashed, and then for some rea-
  1414. son you use the |nCHKDSK|n command and it says your hard drive has no files
  1415. on it, only a million lost chains in a zillion lost clusters.  Well don't
  1416. panic!  It's quite likely that when |nCHKDSK|n went to check your directory
  1417. structure for you, it found the information that it thought it was look-
  1418. ing for, in the |ncache|n so it didn't even look at the hard drive.  The copy
  1419. of the |ndirectory|n structure that was sitting in the |ncache|n has been corrup-
  1420.                            <page down> for more
  1421.                               Cache continued
  1422. ted so CHKDSK just thinks your disk is trashed, but there's really not
  1423. a thing wrong with your hard drive at all.
  1424.  
  1425. So remember, if |nCHKDSK|n ever tells you that your whole disk is trashed
  1426. while you have a disk |ncache|n active, flush or disable the |ncache|n and then
  1427. try again to read your hard drive.  I'll bet you'll find that it's just
  1428. fine.  Just get rid of whatever it was that you were trying to load into
  1429. your extended or upper memory that trashed your |ncache|n information.
  1430.  
  1431. The other type of |ncache|n is a RAM |ncache|n, which is just a small chunk of
  1432. super-fast |nmemory|n.  It performs the same function for the |nmemory|n as what
  1433. a hard drive |ncache|n does for the hard drive.
  1434.  
  1435. By the way, it's pronounced "CASH", not "cash-AY".
  1436.  
  1437.  
  1438.  
  1439.  
  1440.  
  1441.                                What Is |tCMOS|t?
  1442.  
  1443. If you have a 286 or newer computer, you probably have |nCMOS|n.  What is it?
  1444. Complementary Metallic Oxide Semiconductor.  Now don't be asking me what
  1445. that is supposed to mean, I just thought you'd like to know what the in-
  1446. itials stand for.
  1447.  
  1448. What does it do?  Well it's a little piece of memory that is backed up by
  1449. a battery, that keeps track of the date and time, as well as what sort of
  1450. hardware you have installed in your system.  The amount of RAM, the num-
  1451. ber and types of floppy drives, the number of hard drives and detailed
  1452. information about each, the type of graphics adapter, the number of ser-
  1453. ial and parallel ports, all this information is stored in |nCMOS|n.  If your
  1454. |nCMOS|n gets wiped out, your computer won't even know that you have a hard
  1455. drive, so you'll have to boot from a |nfloppy|n.
  1456.  
  1457. So may I suggest that you quickly get into your |nCMOS|n setup and write down
  1458. every detail of what it says, because some day your battery is going to
  1459. run down and the |nCMOS|n information will all be lost, so you'd better know
  1460.                            <page down> for more
  1461.                               CMOS continued
  1462. what information is supposed to be there so you can put it back!
  1463.  
  1464. The way to get into the |nCMOS|n is a little different for each type of BIOS,
  1465. but for mine, a little message comes up on the screen every time I turn
  1466. on the power, which says something like, "Press |nDEL|n to enter |nCMOS|n setup".
  1467. If I press the <Delete> key while that message is on the screen, then af-
  1468. ter a couple seconds I get the |nCMOS|n setup screen.  I'm sure that if your
  1469. screen doesn't give you any such message, then the manual that came with
  1470. your computer will tell you what to do to get to your |nCMOS|n setup.
  1471.  
  1472. Just write down whatever it says there, be sure not to change anything,
  1473. and then exit.  Keep that information that you wrote down in a very safe
  1474. place, and whenever your battery dies, just get a new one, and you'll be
  1475. able to put the correct information back into the |nCMOS|n.
  1476.  
  1477.  
  1478.  
  1479.  
  1480.  
  1481.            Shareware and Other Methods of Software Distribution
  1482.  
  1483. The normal method for distribution of software is plain old |tcommercial|t
  1484. software that you buy in a store or from a catalog, and it generally
  1485. costs five or fifty times what it's worth.
  1486.  
  1487. Sometimes you can get a |tdemo|t version of a |ncommercial|n program, which you
  1488. can try out for free, but some of its best features will be disabled, so
  1489. that it won't do you much good except for seeing whether you like the
  1490. program or not.  That way, if you like it, you'll buy a real copy.
  1491.  
  1492. |tShareware|t is a method of distribution where you can also try the program
  1493. out for free, and only buy it if you like it, but in most cases it is not
  1494. crippled the way |ncommercial|n demos are.  There are some exceptions to that
  1495. and we generally refer to such programs as "crippleware", but for the
  1496. most part, |nshareware|n is fully functional.
  1497.  
  1498. The quality of a piece of |nshareware|n depends on the attitude of the au-
  1499. thor.  Some authors realize that the only way they're going to get paid
  1500.                            <page down> for more
  1501.                             Shareware continued
  1502. for the program, is if it's really good, and so they put a lot of work
  1503. into releasing an excellent product.  Commercial software authors don't
  1504. always do that, because they get their money before you get the software
  1505. home and find out you don't like it!  Unlike most any other type of prod-
  1506. uct in the world there is rarely a money-back guarantee for any software.
  1507. This is because, once the package is opened, it is possible that whoever
  1508. opened it has made a copy of the disks to keep, or perhaps infected them
  1509. with a virus, so most stores won't accept any opened software for return.
  1510. So the author knows that once you buy the product, he gets his money re-
  1511. gardless of whether you like the program or not!  Why should he waste a
  1512. bunch of time making a good program?
  1513.  
  1514. |nShareware|n authors know better, because the only way they can possibly get
  1515. any money at all is if you like the program well enough to send some mon-
  1516. ey.  So they put a lot of time into getting it right.  Also, |ncommercial|n
  1517. software programmers have time limits placed on them by the marketing de-
  1518. partment of their company.  |nShareware|n authors don't have to release their
  1519. products until they're ready for market.  Just a couple explanations for
  1520.                            <page down> for more
  1521.                             Shareware continued
  1522. the fact that there are so many |nshareware|n products available that are
  1523. even better than equivalent commercial programs!
  1524.  
  1525. Some |nshareware|n authors, though, realize that very few people ever bother
  1526. to register their |nshareware|n, so they don't try that hard, because they
  1527. figure they're not going to make any money on it anyway.  Those authors
  1528. give |nshareware|n a bad name, but then again, that's only because so many
  1529. |nshareware|n users don't pay for their |nshareware|n!  So in a way, if you don't
  1530. register the |nshareware|n you like, and you get some other |nshareware|n that
  1531. isn't any good, that's just as much your fault as the fault of the author
  1532. who didn't try hard because he knew you wouldn't register it anyway.
  1533.  
  1534. If you like the concept of downloading software from a BBS, trying it out
  1535. for a day or a week or a month, to make sure you like it, and then send-
  1536. ing a reasonable amount of money to the program's author, then please do
  1537. support the |nshareware|n industry by sending in a registration fee for what-
  1538. ever programs you like.  Because if |nshareware|n authors don't make any mon-
  1539. ey, they're going to stop releasing their work in the |nshareware|n form, and
  1540.                            <page down> for more
  1541.                             Shareware continued
  1542. it will no longer be possible for you, or for anyone to benefit from such
  1543. an equitable arrangement as what |nshareware|n is.
  1544.  
  1545. Besides, if you use a piece of |nshareware|n for more than a month or so,
  1546. without paying for it, you're basically breaking the law!  You're never
  1547. going to get caught or go to jail for it, but that still doesn't make it
  1548. right.
  1549.  
  1550. Another reason to register your |nshareware|n, is that if you do, you might
  1551. get free upgrades, free technical support, a nice neat typeset manual, or
  1552. some special features like a new copy of the program that allows you to
  1553. change its screen colors.
  1554.  
  1555. There are also other software authors who are just so generous, and have
  1556. written some program that they think is so necessary that everyone should
  1557. be able to have it, that they release the program as |tfreeware|t.  This type
  1558. of software is just like it sounds, free!  Totally and completely!
  1559.  
  1560.                            <page down> for more
  1561.                             Shareware continued
  1562. Another type of free software is |tpublic domain|t.  This is just like free-
  1563. ware, only the author doesn't even care if anyone knows he wrote it.
  1564. This stuff is not even copyrighted!  A body could even use it as part of
  1565. a program that they're writing, without worrying that they'll get sued or
  1566. anything.
  1567.  
  1568. So, what types of |nshareware|n, |nfreeware|n, and |npublic domain|n software are
  1569. available?  Just about every type that is available through |nconventional|n
  1570. commercial outlets, and more!  Because |ncommercial|n distributors are only
  1571. interested in software that would appeal to large numbers of people.  So
  1572. there are fewer types.  But if some programmer somewhere writes a little
  1573. program for his own use, and then decides he may as well try to get a
  1574. little money out of it, he releases it as |nshareware|n.  Even if it is some-
  1575. thing that so few people would be interested in, that no software house
  1576. would take it, it is still available as |nshareware|n.  I don't think there's
  1577. any function possible on a computer, that some |nshareware|n author somewhere
  1578. hasn't written a program to accomplish!
  1579.  
  1580.                            <page down> for more
  1581.                             Shareware continued
  1582. Ok, so how do you get this stuff?  Well there are a lot of mail order
  1583. companies that advertise in the computer magazines, that distribute
  1584. |nshareware|n.  However, they charge anything from $1 to $5 per disk, for
  1585. the copying and shipping fees.  So that is in addition to the registra-
  1586. tion fee that is due the author if you like the program.  The other main
  1587. way to get this sort of software, is by |ndownloading|n it over your modem,
  1588. from national online services or from local BBSs.
  1589.  
  1590. So, what is |tdownloading|t?  Well that's when you use your modem to dial up
  1591. a local |nBBS|n, or one of the national online services, and you have your
  1592. software tell their software to send you a file.  Then the file is sent
  1593. from their hard drive straight to your hard drive, over the phone line.
  1594.  
  1595. All, right, now what is a |tBBS|t?  Well that stands for Bulletin Board |nSys|n-
  1596. tem.  What it means is that someone has a very expensive hobby!  The
  1597. Sysop (System Operator) of a |nBBS|n has a spare computer with a large hard
  1598. drive, and a separate phone line, and some special |nBBS|n software, and you
  1599. can just use your modem to call up his computer, and play some games, or
  1600.                            <page down> for more
  1601.                             Shareware continued
  1602. write messages to other users, or download software!
  1603.  
  1604. One thing that most people have to find out the hard way, that is, by
  1605. having someone publicly ask them on the BBS to stop it, which is kind
  1606. of embarrassing:  It is considered rude to type in ALL CAPS on a |nBBS|n
  1607. because it's kind of hard to read, and it's interpreted as shouting.
  1608. Please turn off your <CapsLock> key when writing messages on any |nBBS|n.
  1609.  
  1610. Now usually a program that you download is all packed together into one
  1611. file with an extension like .ZIP, .ARC, .LZH, .ARJ, .ZOO, or .PAK.  These
  1612. are called archive files or compressed files.  They've been compressed so
  1613. that the compressed file is smaller than the sum of the files before com-
  1614. pression, so that it won't take so long to download it, and so that it
  1615. won't take up so much space on the hard drive of the |nBBS|n, and also so
  1616. that you can get the whole program by downloading just one file, rather
  1617. than |ndownloading|n each file of the program separately.
  1618.  
  1619. So what do you do with a .ZIPped or .ARCed file when you get it?  Well
  1620.                            <page down> for more
  1621.                             Shareware continued
  1622. you need the compression program it was compressed with, to decompress
  1623. it.  There's a different compression program that works on each of those
  1624. archive extensions.  One of the most popular is PKZIP which makes the
  1625. files with .ZIP extensions.  All these compression programs are share-
  1626. ware and they are available on the same BBS you downloaded the file from.
  1627. You just need to download the file that contains the compression program.
  1628. Now this file will have an .EXE extension, and it is called a Self-Ex-
  1629. tracting compressed file.  What that means, is that if you just type its
  1630. name, like any other .EXE file, it will uncompress itself.  That way you
  1631. don't have to have the PKUNZIP.EXE file already, in order to unzip the
  1632. PKZIP program.  That wouldn't work at all, would it?
  1633.  
  1634. So when you execute the self-extracting file, it will unzip itself into
  1635. all of the files that make up the program.  Like PKZIP.EXE, PKUNZIP.EXE,
  1636. PKZIPFIX.EXE (in the case of the PKZIP program), and MANUAL.DOC which
  1637. contains all the instructions on how to use the program.  Now you can
  1638. unzip any .ZIP file you might want to download.
  1639.  
  1640.                            <page down> for more
  1641.                             Shareware continued
  1642. The next program you need to download after you get your decompression
  1643. programs, is a virus detection utility.  A really popular one is John
  1644. McAfee's ViruScan.  First use it to scan your hard drive, and also every
  1645. floppy disk you have, and then from then on, just scan everything you
  1646. download, and everything you buy, before you use it.  And always keep the
  1647. most recent version of ViruScan, because the program won't find any vi-
  1648. ruses that weren't invented yet by the time it was written.  If you have
  1649. an old version of ViruScan, it will protect you from old viruses, but not
  1650. from new ones!  Just like a vaccination.
  1651.  
  1652. So that's all there is, to get tons of software at minimal cost.  Just
  1653. download, decompress, scan for viruses, and take it for a test drive.
  1654. But if it's |nshareware|n, and you like it, and you intend to use it, please
  1655. send in the registration fee!  The only thing that keeps |nshareware|n auth-
  1656. ors writing more programs, is if they made some money on the last one
  1657. they wrote.
  1658.  
  1659. Well what do you do with the .ZIP or .ARC or whatever file that you down-
  1660.                            <page down> for more
  1661.                             Shareware continued
  1662. loaded, after you've opened it up and gotten all of the files out of it?
  1663. Well you erase it from your hard drive, because it takes up a lot of hard
  1664. disk space for nothing.  But wait!  First, make sure to copy it to a disk
  1665. for safe-keeping.  Not only because maybe you deleted the program's docu-
  1666. mentation file, and you might need it again later.  Well if so, you just
  1667. get it back out of the compressed file which you copied to a floppy disk.
  1668. But the most important reason to save the compressed file on a |nfloppy|n, is
  1669. that eventually you'll need to upload the file to somewhere.  You see, a
  1670. lot of BBSs keep an upload/download ratio.  That means you're only allow-
  1671. ed to download a certain number of files from each BBS, before you have
  1672. to upload a file to them in exchange for what you got from them.  Well if
  1673. you kept the files you downloaded from another |nBBS|n, you can upload them
  1674. to this |nBBS|n where your up/down ratio is no good.  So if you kept the com-
  1675. pressed files on a |nfloppy|n disk, then you've got them handy, ready to up-
  1676. load whenever you need to.
  1677.  
  1678. You must not ever just zip up a bunch of files from your hard drive and
  1679. upload that.  Because it is a copyright violation, to distribute part of
  1680.                            <page down> for more
  1681.                             Shareware continued
  1682. a program without every single bit of it just the way its author wanted
  1683. it distributed.  And the only way to make sure you send all of the files
  1684. in their original form, is if you still have the .ZIP or .ARC or whatever
  1685. file in the form you downloaded it in.  Because maybe there was a little
  1686. README.TXT file or a batch file that you knew you wouldn't need, and you
  1687. deleted it to save space.  Or maybe the program has a little utility that
  1688. allows you to customize the program to your own favorite colors or some-
  1689. thing, and you did that.  So if you were to compress the program back in-
  1690. to a .ZIP or .ARC or whatever file, and upload it, that would be illegal
  1691. because it's not in the original form anymore.  Well all you have to do,
  1692. to avoid such problems, is copy every file you download, to floppy disks
  1693. before you delete them from your hard drive.  It's not so bad, I have all
  1694. the files I've ever downloaded, sitting on just twelve 720K |ndisks|n.
  1695.  
  1696. Another thing that is a copyright violation, is to use one paid-for copy
  1697. of a software program, on more than one computer.  Some authors allow it,
  1698. but most don't.  If you want to use a program on two computers, you usu-
  1699. ally have to pay for two copies.  This is true for both |nshareware|n and
  1700. commercial programs, and even for DOS itself.
  1701.                             The |tCHKDSK|t Command
  1702.  
  1703. This is a very useful command that performs many different functions.
  1704. The main thing it is supposed to do is CHecK the directory structure of
  1705. your DiSK.  There are lots of things that can go wrong when the read/
  1706. write heads are writing to a disk.  Any sort of disturbance can cause
  1707. the heads to not write what they were supposed to write, and |nCHKDSK|n can
  1708. find what problems may have been caused, and can also correct some of
  1709. them.
  1710.  
  1711. However, |nCHKDSK|n will only make corrections if the /F switch was specified
  1712. on the command line.  If the /F switch was not given, and |nCHKDSK|n finds
  1713. any errors, it will say something like, "F parameter not specified, cor-
  1714. rections will not be written to disk".  |nCHKDSK|n will continue to act like
  1715. it is making corrections, however, just to show you what corrections it
  1716. would have made if the /F switch had been specified.  So if you like the
  1717. corrections, you can re-run the |nCHKDSK|n command with the /F switch and it
  1718. will actually write the corrections to the disk.  With DOS version 5, do
  1719. not ever use the /F switch while any |sTSR|ss are in |smemory|s!
  1720.                            <page down> for more
  1721.                              CHKDSK continued
  1722. The most common error that |nCHKDSK|n finds is something like "4 lost chains
  1723. in 6 clusters".  What that means is that there is some data on the disk
  1724. that has space allocated to it in the FAT, but that has no entries in the
  1725. directory.  If you specify the /F switch, |nCHKDSK|n will convert those lost
  1726. chains to files, and give the files names like FILE0000.CHK and put them
  1727. into the root |ndirectory|n of the disk.  Now what do you do with them?
  1728.  
  1729. Well, first look at them with the TYPE command or some other file brow-
  1730. ser.  If they are nothing but strange symbols, then they must have been
  1731. .COM or .EXE files, and there is no way you can |nrecover|n them.  Because it
  1732. is highly unlikely that the files are complete, and who knows what might
  1733. happen if you try to run a command file that is not complete.  Just del-
  1734. ete those files.
  1735.  
  1736. If there is some recognizable text inside though, you should be able to
  1737. tell what application the lost chain was from.  Just load it into that
  1738. application, and do your best to put the file back to the way it used to
  1739. be.  It's usually better than losing the whole file.
  1740.                            <page down> for more
  1741.                              CHKDSK continued
  1742. Most often, though, these FILE0000.CHK files that |nCHKDSK|n makes are not
  1743. anything important at all.  They're usually pieces of temp files that
  1744. some application was using, which would have been deleted by that app if
  1745. the app had been properly exited, but maybe your machine locked up and
  1746. you had to reboot, so the app didn't get a chance to delete its temp
  1747. files.  Those will quite often end up as lost chains, and deleting them
  1748. is no problem.
  1749.  
  1750. Well as long as these lost clusters are sitting on your disk, they're
  1751. just taking up disk space for no reason.  So you want to run the |nCHKDSK|n
  1752. command every week or so, to free up any space that might be in use by
  1753. these silly things.
  1754.  
  1755. Another error message that |nCHKDSK|n comes up with pretty often is "FILE1 is
  1756. cross-linked on cluster ##, FILE2 is cross-linked on cluster ##".  This
  1757. means that both FILE1's and FILE2's FAT entries say that the two files
  1758. are using the same cluster of disk space.  This is a |nFAT|n error that CHK-
  1759. DSK can't do anything about.  You have to try to fix it yourself.  You
  1760.                            <page down> for more
  1761.                              CHKDSK continued
  1762. must not ever try to run an executable file that has been cross-linked!
  1763. Just delete it.  But if one or both of the files are non-executable,
  1764. there is hope for recovery.  Just COPY the files to a different disk or
  1765. directory and delete them both from the original location.  Now load the
  1766. files into whatever application created them and see how much data you
  1767. can save.  One of the files will contain a cluster from the other file,
  1768. and also one or both of them may have been truncated (cut off) at the
  1769. point where the cross-linkage had occurred.  But it's better than losing
  1770. both files altogether.  Of course if they were both |nexecutable|n files then
  1771. it's a total loss.  That's what |sbackup|ss are for.
  1772.  
  1773. So, what else is the |nCHKDSK|n command good for?  Well, it gives you a real
  1774. nice summary of what's on your disk, as well as how much free RAM you
  1775. have.  It can also give you a list of every file on the disk, if you use
  1776. the /V (verbose) switch.  And that will include all the Hidden files too.
  1777. If you pipe the output of |nCHKDSK|n /V to the FIND command, you can find the
  1778. location of any file on your disk:
  1779.           |nCHKDSK|n C:\|n*.*|n /V || |nFIND|n ".BAT"
  1780.                            <page down> for more
  1781.                              CHKDSK continued
  1782. would show you the full filespec for every .BAT file on the disk.  But
  1783. remember, the FIND command is case-sensitive, and filenames are always
  1784. stored in all caps, so |nFIND|n ".bat" would not work at all.
  1785.  
  1786. Another thing the |nCHKDSK|n command can do is tell you whether you have any
  1787. |tfragmented|t files.  What does that mean?  Well, DOS stores files on a disk
  1788. a cluster at a time.  A cluster, depending on the version of DOS the disk
  1789. was formatted with, and also the size of the disk, can be anywhere from
  1790. 512 to 16384 bytes.  Most hard disks have 2048-byte clusters.  Well when
  1791. DOS is writing a file to disk, it puts down one cluster's worth of data
  1792. into the first available cluster on the disk, then it puts the second
  1793. cluster of the file into the second available cluster on the disk, then
  1794. it puts the third cluster of the file into the third available cluster on
  1795. the disk, etc.  These clusters aren't necessarily next to each other on
  1796. the disk, and if they're not, then the file is said to be |nfragmented|n.
  1797. Your hard drive will appear to work faster if all the pieces of a file
  1798. are right next to each other, or in contiguous clusters.  There are lots
  1799. of disk defragmenters on the market, and it's a very good idea to get one
  1800.                            <page down> for more
  1801.                              CHKDSK continued
  1802. and use it weekly.
  1803.  
  1804. If you can't yet afford to buy a disk defragmenter (often called a disk
  1805. optimizer) and you can't find a shareware one, another solution to frag-
  1806. mentation is to BACKUP the disk, FORMAT it, and RESTORE the files.  This
  1807. is because any time you |nbackup|n or COPY a file to a blank disk, all the
  1808. pieces of the file are placed into contiguous clusters.  Then when you
  1809. format that first disk, all the clusters become available again so when
  1810. you restore the files, they also stay in contiguous clusters.  It's only
  1811. after you have deleted some file from the disk, that a space opens up in
  1812. the middle of the disk space so the next file that's written to the disk,
  1813. if it's longer than the file that got deleted, may become fragmented.
  1814.  
  1815. In order to make the |nCHKDSK|n command tell you about fragmentation on a
  1816. whole disk, you have to use the command on each directory separately.
  1817. For example, |nCHKDSK|n C:\*.* and |nCHKDSK|n C:\DOS\*.* and |nCHKDSK|n C:\UTIL\*.*,
  1818. et cetera.
  1819.  
  1820. Please see the last couple pages of the Cache chapter!
  1821.                          PLEASE IGNORE THIS PAGE!
  1822. |TMain Menu|T
  1823. |TEXIT|T|fSIMPLY2|f
  1824. |TFORMAT|T|fSIMPLY2|f
  1825. |TRAMDRIVE.SYS|T|fSIMPLY2|f
  1826. |TRESTORE|T|fSIMPLY2|f
  1827. |TSYS|T|fSIMPLY2|f
  1828. |TVDISK.SYS|T|fSIMPLY2|f
  1829. |tASCII|t|fSIMPLY2|f
  1830. |tBoo|1t Disk|t|fSIMPLY2|f
  1831. |tDisks|t|fSIMPLY2|f
  1832. |tEDLIN|t|fSIMPLY2|f
  1833. |tExecutable|t|fSIMPLY2|f
  1834. |tLow-Level|t|fSIMPLY2|f
  1835. |tMagnetism|t|fSIMPLY2|f
  1836. |tParameters|t|fSIMPLY2|f
  1837. |tPower|t|fSIMPLY2|f
  1838. |tRAMdisk|t|fSIMPLY2|f
  1839. |tReplaceable|t|fSIMPLY2|f
  1840. |tShelling Out|t|fSIMPLY2|f
  1841. |tVirtual Disk|t|fSIMPLY2|f
  1842. |tdisk full|t|fSIMPLY2|f
  1843. |tediting keys|t|fSIMPLY2|f
  1844. |tfloppy|t|fSIMPLY2|f
  1845. |TAPPEND|T|fSIMPLY3|f
  1846. |TASSIGN|T|fSIMPLY3|f
  1847. |TAUX|T|fSIMPLY3|f
  1848. |TAbout This Program|T|fSIMPLY3|f
  1849. |TBREAK|T|fSIMPLY3|f
  1850. |TBUFFERS|T|fSIMPLY3|f
  1851. |TCALL|T|fSIMPLY3|f
  1852. |TCHCP|T|fSIMPLY3|f
  1853. |TCLOCK$|T|fSIMPLY3|f
  1854. |TCLS|T|fSIMPLY3|f
  1855. |TCOM1|T|fSIMPLY3|f
  1856. |TCOMP|T|fSIMPLY3|f
  1857. |TCON|T|fSIMPLY3|f
  1858. |TCOPY|T|fSIMPLY3|f
  1859. |TCOUNTRY|T|fSIMPLY3|f
  1860. |TCTTY|T|fSIMPLY3|f
  1861. |TDATE|T|fSIMPLY3|f
  1862. |TDEBUG|T|fSIMPLY3|f
  1863. |TDEL|T|fSIMPLY3|f
  1864. |TDEVICEHIGH|T|fSIMPLY3|f
  1865. |TDEVIC|1E|T|fSIMPLY3|f
  1866. |TDIR|T|fSIMPLY3|f
  1867. |TDISKCOMP|T|fSIMPLY3|f
  1868. |TDO|1S|T|fSIMPLY3|f
  1869. |TERASE|T|fSIMPLY3|f
  1870. |TFOR|T|fSIMPLY3|f
  1871. |TGRAFTABL|T|fSIMPLY3|f
  1872. |TKEYB|T|fSIMPLY3|f
  1873. |TLPT1|T|fSIMPLY3|f
  1874. |TNLSFUNC|T|fSIMPLY3|f
  1875. |TNUL|T|fSIMPLY3|f
  1876. |TPRN|T|fSIMPLY3|f
  1877. |TSHIFT|T|fSIMPLY3|f
  1878. |TTIME|T|fSIMPLY3|f
  1879. |tBad command or filename|t|fSIMPLY3|f
  1880. |tDevice|1s|t|fSIMPLY3|f
  1881. |tPATH|t|fSIMPLY3|f
  1882. |tconcatenation|t|fSIMPLY3|f
  1883. |TCOMMAN|1D|T|fSIMPLY4|f
  1884. |TDOSKEY|T|fSIMPLY4|f
  1885. |TDRIVPARM|T|fSIMPLY4|f
  1886. |TECHO|T|fSIMPLY4|f
  1887. |TEDIT|T|fSIMPLY4|f
  1888. |TEMM386|T|fSIMPLY4|f
  1889. |TEXE2BIN|T|fSIMPLY4|f
  1890. |TEXPAND|T|fSIMPLY4|f
  1891. |TFASTOPEN|T|fSIMPLY4|f
  1892. |TFCBS|T|fSIMPLY4|f
  1893. |TFC|T|fSIMPLY4|f
  1894. |TFDISK|T|fSIMPLY4|f
  1895. |TFILES|T|fSIMPLY4|f
  1896. |TFIND|T|fSIMPLY4|f
  1897. |TGOTO|T|fSIMPLY4|f
  1898. |TGRAPHICS|T|fSIMPLY4|f
  1899. |THELP|T|fSIMPLY4|f
  1900. |TINSTALL|T|fSIMPLY4|f
  1901. |TLABEL|T|fSIMPLY4|f
  1902. |TLASTDRIVE|T|fSIMPLY4|f
  1903. |TLOADFIX|T|fSIMPLY4|f
  1904. |TLOADHIGH|T|fSIMPLY4|f
  1905. |TMKDIR|T|fSIMPLY4|f
  1906. |TMORE|T|fSIMPLY4|f
  1907. |tBIOS|t|fSIMPLY4|f
  1908. |tPark|t|fSIMPLY4|f
  1909. |tWrite-protect|t|fSIMPLY4|f
  1910. |TDOSSHELL|T|fSIMPLY5|f
  1911. |TGWBASIC|T|fSIMPLY5|f
  1912. |TJOIN|T|fSIMPLY5|f
  1913. |TMEM|T|fSIMPLY5|f
  1914. |TMIRROR|T|fSIMPLY5|f
  1915. |TMODE|T|fSIMPLY5|f
  1916. |TPAUSE|T|fSIMPLY5|f
  1917. |TPOST|T|fSIMPLY5|f
  1918. |TRECOVER|T|fSIMPLY5|f
  1919. |TREM|T|fSIMPLY5|f
  1920. |TRENAME|T|fSIMPLY5|f
  1921. |TREPLACE|T|fSIMPLY5|f
  1922. |TSELECT|T|fSIMPLY5|f
  1923. |TSHARE|T|fSIMPLY5|f
  1924. |TSTACKS|T|fSIMPLY5|f
  1925. |TTRUENAME|T|fSIMPLY5|f
  1926. |TUNDELETE|T|fSIMPLY5|f
  1927. |TUNFORMAT|T|fSIMPLY5|f
  1928. |TVERIFY|T|fSIMPLY5|f
  1929. |TVER|T|fSIMPLY5|f
  1930. |TVOL|T|fSIMPLY5|f
  1931. |t*.*|t|fSIMPLY5|f
  1932. |tBoot|t|fSIMPLY5|f
  1933. |tCOMMAND.COM|t|fSIMPLY5|f
  1934. |tReboot|t|fSIMPLY5|f
  1935. |tWildcards|t|fSIMPLY5|f
  1936. |TDRIVER.SYS|T|fSIMPLY6|f
  1937. |TPRINT|T|fSIMPLY6|f
  1938. |TQBASIC|T|fSIMPLY6|f
  1939. |TSETVER|T|fSIMPLY6|f
  1940. |TSORT|T|fSIMPLY6|f
  1941. |TSUBST|T|fSIMPLY6|f
  1942. |TSWITCHAR|T|fSIMPLY6|f
  1943. |TSWITCHES|T|fSIMPLY6|f
  1944. |TTREE|T|fSIMPLY6|f
  1945. |TTYPE|T|fSIMPLY6|f
  1946. |tAbort, Retry, Fail, Ignore|t|fSIMPLY6|f
  1947. |tCONFIG.SYS|t|fSIMPLY6|f
  1948. |tCleaning|t|fSIMPLY6|f
  1949. |tFAT|t|fSIMPLY6|f
  1950. |tKeyboard|t|fSIMPLY6|f
  1951. |tLogical Drives|t|fSIMPLY6|f
  1952. |tRedirection|t|fSIMPLY6|f
  1953. |tTSR|t|fSIMPLY6|f
  1954. |tbinary|t|fSIMPLY6|f
  1955. |tdecimal|t|fSIMPLY6|f
  1956. |thexadecimal|t|fSIMPLY6|f
  1957. |TERRORLEVEL|T|fSIMPLY5|f
  1958. |TEXIST|T|fSIMPLY5|f
  1959. |TIF|T|fSIMPLY5|f
  1960. |TNOT|T|fSIMPLY5|f
  1961. |TSMARTDRV.SYS|T|fSIMPLY4|f
  1962. |TXCOPY|T|fSIMPLY2|f
  1963. |tBatch File|t|fSIMPLY7|f
  1964. |tDevice Driver|t|fSIMPLY3|f
  1965. |tFile Creation Error|t|fSIMPLY2|f
  1966. |tPROMPT|t|fSIMPLY6|f
  1967. |TWhat Is DOS?|T|fSIMPLY4|f
  1968. |TTrademarks|T|fSIMPLY3|f
  1969.